我尝试根据年份按不同的列进行分组,并仅申请同一年,最后将结果存储在 .csv 文件中。
我的数据和代码是:
ISO3 Income_Cat_1980 Income_Cat_1985 DWWC1980 DWWC1985
AFG L LM 5 10
AGO LM H 15 25
ALB LM UM 30 40
ARE H H 40 50
for i in range (1980,1990,5):
df=pd.DataFrame(pd.read_csv("mydata.csv"))
df=df.groupby("Income_Cat_"+str(i)).sum()
print df
df.to_csv('country-surplus'+str(i)+'.csv',index="Income_Cat_"+str(i))
我的代码结果是:
Income_Cat_1980 DWWC1980 DWWC1985
H 40 50
L 5 10
LM 45 65
Income_Cat_1985 DWWC1980 DWWC1985
H 55 75
LM 5 10
UM 30 40
并将输出存储在不同的.csv
文件中,但我需要根据同一年计算DWWC1980
和DWWC1985
的总和Income_Cat
,所以结果应该是:
Income_Cat DWWC1980 DWWC1985
H 40 75
L 5 0
LM 45 10
UM 0 40
并将输出存储在一个 .csv
文件中。
最佳答案
如果我理解这个问题,这应该会产生所需的输出
init = True
for i in range(1980,1990,5):
_df = df[["Income_Cat_"+str(i), 'DWWC'+str(i)]]
_df=_df.groupby("Income_Cat_"+str(i)).sum()
if init:
out = _df
init=False
else:
out = out.merge(_df, how='outer', left_index=True, right_index=True)
out.fillna(0, inplace=True)
out.index.rename('Income_cat', inplace=True)
您可以通过将循环内的第一行替换为:
_df = df[[a for a in df.columns if str(i) in a]]
关于python - 如何按不同的列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394645/