python - 如何按不同的列进行分组

标签 python pandas pandas-groupby

我尝试根据年份按不同的列进行分组,并仅申请同一年,最后将结果存储在 .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文件中,但我需要根据同一年计算DWWC1980DWWC1985的总和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/

相关文章:

python - 将 Dataframe 列与 numpy ndarray 进行比较并更新数据框中的值

python - 以数值方式求解积分极限?

python - 使用包含文档作为字节的对象导出 Pandas DataFrame 时出现问题

python - 出于安全目的,将 os.system 替换为 os.popen

Python Pandas : Conditionally delete rows

python - 如何在一行 python pandas 代码中应用 2 个不同的条件?

python - groupby 过滤每月余额均为负数的帐户

python-3.x - 如何检查panda dataframe组是否具有相同的数据

python - 是否可以将 agg 和 value_counts 与 Pandas 组合在单行中

python - 主管和 perlbrew