python - pandas groupby 使用字典值,应用 sum

标签 python pandas

我有一个默认字典:

dd = defaultdict(list,
        {'Tech': ['AAPL','GOOGL'],
         'Disc': ['AMZN', 'NKE']  }

和一个看起来像这样的数据框:

         AAPL AMZN GOOGL NKE
1/1/10   100  200  500   200
1/2/10   100  200  500   200
1/310    100  200  500   200

我想要的输出是根据字典的值对数据帧求和,以键作为列:

         TECH DISC 
1/1/10   600  400 
1/2/10   600  400  
1/3/10   600  400 

pandas groupby 文档说如果你传递一个字典它会这样做但是我最终得到的只是一个空的 df 使用这个代码:

df.groupby(by=dd).sum()   ##returns empty df

最佳答案

以正确的方式创建dict,你可以使用by with axis=1

# map each company to industry
dd_rev = {w: k for k, v in dd.items() for w in v}
# {'AAPL': 'Tech', 'GOOGL': 'Tech', 'AMZN': 'Disc', 'NKE': 'Disc'}

# group along columns
df.groupby(by=dd_rev,axis=1).sum() 

Out[160]: 
        Disc  Tech
1/1/10   400   600
1/2/10   400   600
1/310    400   600

关于python - pandas groupby 使用字典值,应用 sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789425/

相关文章:

python - Pandas ,如何避免使用 iterrow(如何根据另一个数据框中的值将值分配给数据框中的新列)

python - Pandas 重命名操作更改两列而不是一列上的列名称

python Selenium 抓取 tbody

python - 制作一个在程序运行时调用的函数

python - 从找到的极值中获取完整行数据

python - 如何获取pandas中两列之间的日期范围信息

python - 整个 Pandas DF 的最小 n 值的索引

python - 从 Meta 类中删除 Unique_together 关系?

python - 从 matplotlib 中的 3D 散点图中提取数据

python-3.x - 根据其他列值从数据框列中的列表中删除最后一个元素