【问题标题】:Loop a function in Python在 Python 中循环一个函数
【发布时间】:2019-10-18 05:46:38
【问题描述】:

如何为以下数据集循环函数。

我只能通过特定用户使用该功能

df =sorteddf[sorteddf.user ==1]
function(df)

数据集包含多个用户

time_slot              User     Location
2017-10-27 15:00:00     1       766
2017-10-27 15:45:00     1       902
2017-10-27 16:00:00     1       902
2017-10-27 10:45:00     2       902
2017-10-27 12:45:00     2       902 
2017-10-27 16:30:00     2       902 

如何为数据框中的所有用户使用该功能并打印所有用户的输出。

time_slot              User    Location
2017-10-27 00:00:00     1.0     766.0   
2017-10-27 00:15:00     1.0     961.0   
2017-10-27 00:30:00     1.0     56.0    
2017-10-27 00:45:00     1.0     542.0   
2017-10-27 01:00:00     1.0     324.0   
2017-10-27 01:15:00     1.0     526.0   
2017-10-27 01:30:00     1.0     258.0   
2017-10-27 01:45:00     1.0     532.0   

【问题讨论】:

  • 如果我的回答有帮助,请告诉我
  • @makaros 请删除这些 cmets,再也不做自我广告了!!
  • @makaros 你应该知道,你有 7k 代表
  • 你也可以发布这个功能吗? sorteddf ...?
  • @anky_91 sorteddf 只不过是我的 df 的名称。让我们假设该函数是任何随机函数。输出应该就像列中的所有用户都应该通过函数并打印所有用户的输出数据。

标签: python pandas for-loop


【解决方案1】:

定义用户列表,然后使用for 循环来应用您的函数:

使用function 计算位置变量总和的示例。

def function(sorteddf, i):
    print(sorteddf[sorteddf.User==i]['Location'].sum())

users = sorteddf['User'].unique()

for i in users:
    function(sorteddf , i)

输出:

【讨论】:

  • 它只打印最后一个用户,而不是所有用户。你能验证一下吗
  • 试试 print(function(df)) ?
  • 我不明白反对意见。我提供了一个运行良好的示例。
  • @Krush23 查看我的更新答案和获得的输出(图片)。
【解决方案2】:

您可以为每个用户创建一个循环,如下所示:

users = sorteddf['User'].unique()
for user in users:
    print('Output for user {}'.format(user))
    function(sorteddf[sorteddf.User == user])

这是您要找的东西吗?

【讨论】:

  • 不完全是。您可以在上面找到详细说明
  • 然后将 df = sorteddf[sorteddf.User == user] 传递给您的函数。这不应该工作吗?
  • 不,那是行不通的。能详细写代码吗?
  • 我编辑了答案。检查这是否会产生您正在寻找的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 2015-08-05
  • 2019-12-23
  • 1970-01-01
相关资源
最近更新 更多