根据现有列在平面表中创建新变量

Create a new variable in flat tables based on existing column

我得到了以下数据框:

lst=[['01012021','A',5],['01012021','B',-10],['01012021','C',20],['01022021','A',20],['01022021','B',-30],['01022021','C',40]]
df2=pd.DataFrame(lst,columns=['Date','Art','AuM'])

我想通过添加 A、B 和 C 在 Art 列中创建一个新变量 (D)。它应该按日期和 Art 列分组。结果如下所示:

lst=[['01012021','A',5],['01012021','B',-10],['01012021','C',20],['01012021','D',15],['01022021','A',20],['01022021','B',-30],['01022021','C',40],['01022021','D',30]]
df2=pd.DataFrame(lst,columns=['Date','Art','AuM'])

感谢您的帮助。

您可以groupby Date, assign 'D' as a new column Art to the result and append原始数据框:

df2.append(df2.groupby('Date', as_index=False).AuM.sum().assign(Art='D'))

如果需要,您可以通过附加 .sort_values(['Date', 'Art']):

进行排序
       Date Art  AuM
0  01012021   A    5
1  01012021   B  -10
2  01012021   C   20
0  01012021   D   15
3  01022021   A   20
4  01022021   B  -30
5  01022021   C   40
1  01022021   D   30