我有这样的数据框:
import pandas as pd
data = {
'POS': ['1','2','1','3','4'],
'TYPE': ['A','A','A','B','C'],
'VOLUME': [34,2,12,200,1],
}
df = pd.DataFrame(data)
df
表:
POS TYPE VOLUME
0 1 A 34
1 2 A 2
2 1 A 12
3 3 B 200
4 4 C 1
任务:
我想为列TYPE
中的每个不同值自动创建新列,并获取按POS
分组的每个值的出现次数(假设有很多不同的值,不仅仅是A,B和C)。另外,我只想总结VOLUME
。
结果应如下所示:
|--------------|--------------|--------------|--------------|--------------|
| POS | Amount_A | Amount_B | Amount_C | Sum_Volume |
|--------------|--------------|--------------|--------------|--------------|
| 1 | 2 | 0 | 0 | 46 |
| 2 | 1 | 0 | 0 | 2 |
| 3 | 0 | 1 | 0 | 200 |
| 4 | 0 | 0 | 1 | 1 |
|--------------|--------------|--------------|--------------|--------------|
尝试:
我知道如何为VOLUME
:df.groupby(['POS'])['VOLUME'].sum()
执行此操作。但是我不知道如何管理新的专栏没有#34;如果TYPE
==' A'然后......"。
答案 0 :(得分:2)
试试这个:
import pandas as pd
data = {
'POS': ['1','2','1','3','4'],
'TYPE': ['A','A','A','B','C'],
'VOLUME': [34,2,12,200,1],
}
df = pd.DataFrame(data)
df = pd.concat([df,pd.get_dummies(df["TYPE"])],axis=1)
print(df.groupby("POS").sum())
输出:
VOLUME A B C POS 1 46 2 0 0 2 2 1 0 0 3 200 0 1 0 4 1 0 0 1