python - 在数据框中应用条件 lambda 语句

标签 python pandas dataframe pivot-table apply

我有一个大约 15000 行 x 1000 列的数据框,片段如下:

ID                     1211    2332    3423    4534
Time

2019-10-03 07:00:00     0       1      1        1
2019-10-03 07:10:00     0       0      0        1
2019-10-03 07:20:00     1       1      0        1
2019-07-03 07:30:00     1       1      1        1

使用以下命令将其制作为pivot2:

python command 
pivot=df.pivot(index='Time',columns='ID',values='result')

我想对此进行总结,以便我可以查看每日数据,其中每天的值都应用了总和/计数公式。

我希望获取以下形状的数据:

这些行是按天排列的。

这些列是按 ID 计算的当天所有值为 1 的值除以当天的观察总数。

例如,对于上面的 ID 1211,对于 2019 年 10 月 3 日的日期,值 1 在三个总计值中出现 1 次。所以我想要一个值 1/3 = 0.33。

ID                     1211    2332    3423    4534
Time

2019-10-03              0.33    0.67   0.33     1.00
2019-07-03              1.00    1.00   1.00     1.00    

我希望这是有道理的。任何帮助将非常感激!

最佳答案

您可以使用groupby + mean 按照建议@WenYoBen

mean_df=df.groupby(df.index.date).mean()
print(mean_df)
ID              1211      2332      3423  4534
2019-07-03  1.000000  1.000000  1.000000   1.0
2019-10-03  0.333333  0.666667  0.333333   1.0

要计算值,您可以使用 Series.value_counts :

my_count=df.groupby(df.index.date).apply(lambda x: pd.concat([x[col].value_counts() for col in x.columns],axis=1)).fillna(0)
print(my_count)
              1211  2332  3423  4534
2019-07-03 1     1     1     1   1.0
2019-10-03 0     2     1     2   0.0
           1     1     2     1   3.0

关于python - 在数据框中应用条件 lambda 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401900/

相关文章:

python - Pandas,根据列值的唯一子集追加列

python - 如何在一个 groupby 列上执行聚合选项,给出两列输出

python - 如何使用 PySimpleGUI 将结果打印到命令行而不是弹出窗口?

python - Restplus API应用程序对象不可调用?

python - 如何使用线程获取数据并将数据写入同一个文本文件

r - 有没有什么方法可以使用 Shiny 的操作按钮递归地将行添加到 data.frame 中?

python - 比较两个数据框并根据掩码值向数据框添加新列

Python多线程内存

python - 将 Pandas 数据框 reshape 为与重复行一样多的列

python - 在python中从字符串创建变量