迭代多个数据帧并根据特定列执行计算

2024-05-13 21:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个以月份为列的数据帧,包含整数值。我为这个例子贴了2张。在

df1 =     
             June 2016       July 2016
Flavor
Vanilla      17.0            23.0
Chocolate    7.0             12.0
Strawberry   11.0            14.0

df2 =        
             June 2016       July 2016
Flavor
Vanilla      9.0            19.0
Chocolate    10.0           3.0

当数据帧必须匹配时,如何迭代每个数据帧并根据数据帧的行和列名执行计算?例如,我想计算7月份香草的平均值,即(23+19)/2。如果Flavor也不存在于一个数据帧中,那么我还希望在该数据帧中每月分配一个常量值(在本例中为15)。我会将数据帧附加在一起然后应用.mean()?在

提前谢谢,很抱歉,我现在正在旅行中。在

谢谢!在


Tags: 数据整数july例子平均值df1df2常量
2条回答

考虑直接矢量化,因为您可以在类似的结构化数据帧上运行算术运算:

(df1 + df2.reindex(labels=df1.index.values, fill_value=15)) / 2

#             June 2016  July 2016
# Flavor                          
# Vanilla          13.0       21.0
# Chocolate         8.5        7.5
# Strawberry       13.0       14.5

对于列表中的许多数据帧,请考虑reduce

^{pr2}$

数据

import pandas as pd
from io import StringIO

txt = '''             
Flavor      "June 2016"       "July 2016"
Vanilla      17.0            23.0
Chocolate    7.0             12.0
Strawberry   11.0            14.0'''

df1 = pd.read_table(StringIO(txt), sep="\s+", index_col=0)


txt = '''             
Flavor      "June 2016"       "July 2016"
Vanilla      9.0            19.0
Chocolate    10.0           3.0'''

df2 = pd.read_table(StringIO(txt), sep="\s+", index_col=0)

对列使用groupby

pd.concat([df1,df2],1).fillna(15).groupby(level=0,axis=1).mean()
Out[408]: 
            July2016  June2016
Chocolate        7.5       8.5
Strawberry      14.5      13.0
Vanilla         21.0      13.0

相关问题 更多 >