【发布时间】:2021-10-18 23:03:58
【问题描述】:
我正在尝试为包含数百列的非常大的数据框生成汇总统计信息,并总结它们与感兴趣的“结果”的关系。可以使用以下代码生成一个简化的数据框:
df1 = pd.DataFrame({"time1": [0, 1, 1, 0, 0],
"time2": [1, 0, 0, 0, 1],
"time3": [0, 0, 0, 1, 0],
"outcome": [1, 0, 0, 1, 0]})
我想做的是为每一列确定它们与结果特征在比例和总和方面的关系。
目前,我一次做几列如下:
df1 = df1.groupby("outcome")[["time1", "time2", "time3"]].agg(["mean", "sum"]).reset_index()
df1[df1["outcome"] == 1].T
这导致了一个相当混乱的数据框,如下所示:
1
outcome 1.0
time1 mean 0.0
sum 0.0
time2 mean 0.5
sum 1.0
time3 mean 0.5
sum 1.0
如何改进此输出以显示每列的平均值和各列的总和?类似于下面显示的输出。
mean sum
time1 0 0
time2 0.5 1
time3 0.5 1
理想情况下,我想对数据框中的数百列执行此操作,并评估它们与结果的关系。
那么有人可以指导我找到一个解决方案,让我可以为数百列执行此操作(无需单独输入他们的名称将是解决方案)并将结果显示在一个干净的数据框中,如上面的示例输出所示?非常感谢!
【问题讨论】:
-
在混乱的数据框之后尝试
unstack。或者,看看pd.pivot_table -
谢谢萨米! Unstuck 有帮助,但它仍然需要我在上面的代码中输入每个列名。