python - 在 Pandas 的数据框中创建一个组

标签 python pandas dataframe

我有一个列表,例如

groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]

和一个数据框,例如

A 100
B 200
C 300
D 400

我想从上面的列表中做一个组和成为:

Group 1 300
Group 2 700

如何使用 python pandas 执行此操作? 不用说我是 Pandas 的新手。谢谢。

最佳答案

您需要通过lists 创建dict 然后groupby并聚合 sum:

df = pd.DataFrame({'a': ['A', 'B', 'C', 'D'], 'b': [100, 200, 300, 400]})
print (df)
   a    b
0  A  100
1  B  200
2  C  300
3  D  400

groups = [['Group1', 'A', 'B'], ['Group2', 'C', 'D']]

#http://stackoverflow.com/q/43227103/2901002
d = {k:row[0] for row in groups for k in row[1:]}
print (d)
{'B': 'Group1', 'C': 'Group2', 'D': 'Group2', 'A': 'Group1'}

print (df.set_index('a').groupby(d).sum())
          b
Group1  300
Group2  700

可能稍微修改一下解决方案 - 如果只有 b 列按 sum 聚合。最后 reset_index用于将索引转换为列。

df1 = df.set_index('a').groupby(pd.Series(d, name='a'))['b'].sum().reset_index()
print (df1)
        a    b
0  Group1  300
1  Group2  700

df2 = df.groupby(df['a'].map(d))['b'].sum().reset_index()
print (df2)
        a    b
0  Group1  300
1  Group2  700

关于python - 在 Pandas 的数据框中创建一个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43226799/

相关文章:

python - 需要对 Django REST Framework 中的序列化程序的 `Including extra context` 进行说明

Python 绘图 - 循环遍历特征和绘图的唯一值

python - 在 python 列表上使用 apply 时出现错误

python - 使用 pandas datareader 时出现 Keyerror 'Date'

Python/Pandas - 如果A列等于X或Y,则从B列分配值。如果不是,则分配C列。如何用Python编写?

python - Dataframe加入python

python - 在多个 python pandas 数据帧中查找记录

Python检测语言ISO代码的方法

python - Z3 Prover 返回错误的解决方案

python - 如何使用 idxmax 输出对 pandas 数据框列进行子集化?