例如,我有一个熊猫数据框,如下所示:
col_1 col_2 col_3 col_4 a X 5 1 a Y 3 2 a Z 6 4 b X 7 8 b Y 4 3 b Z 6 5
我想为col_1中的每个值添加col_3和col_4中的值(以及更多列),这些值与col_2中的X和Z对应,并使用这些值创建新行。因此输出如下:
col_1 col_2 col_3 col_4 a X 5 1 a Y 3 2 a Z 6 4 a NEW 11 5 b X 7 8 b Y 4 3 b Z 6 5 b NEW 13 13
另外,col_1中可能会有更多需要相同处理的值,因此我无法明确引用“ a”和“ b”。我尝试使用groupby(’col_1’)和apply()的组合,但无法正常工作。我与下面的内容足够接近,但是我无法在col_2中将“ NEW”放置在col_1中并保留原始值(a或b等)。
df.append(df[(df['col_2'] == 'X') | (df['col_2'] == 'Z')].groupby('col_1').mean())
谢谢。
如果可以保证X并且Z仅在组中出现一次,则可以使用groupbyandpd.concat操作:
X
Z
groupby
pd.concat
new = df[df.col_2.isin(['X', 'Z'])]\ .groupby(['col_1'], as_index=False).sum()\ .assign(col_2='NEW') df = pd.concat([df, new]).sort_values('col_1') df col_1 col_2 col_3 col_4 0 a X 5 1 1 a Y 3 2 2 a Z 6 4 0 a NEW 11 5 3 b X 7 8 4 b Y 4 3 5 b Z 6 5 1 b NEW 13 13