我有一个大约 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/