我有一个 pandas 数据框,df
:
foo bar
0 Supplies Sample X
1 xyz A
2 xyz B
3 Supplies Sample Y
4 xyz C
5 Supplies Sample Z
6 xyz D
7 xyz E
8 xyz F
我想创建一个如下所示的新 df:
bar
0 Sample X - A
1 Sample X - B
2 Sample Y - C
3 Sample Z - D
4 Sample Z - E
5 Sample Z - F
我是 Pandas 新手,所以我不知道如何实现这一目标。有人可以帮忙吗?
我试过DataFrame.iterrows 但运气不佳。
最佳答案
您可以使用boolean indexing和 ffill
:
m = df['foo'].ne('Supplies')
out = (df['bar'].mask(m).ffill()[m]
.add(' - '+df.loc[m, 'bar'])
.to_frame().reset_index(drop=True)
)
输出:
bar
0 Sample X - A
1 Sample X - B
2 Sample Y - C
3 Sample Z - D
4 Sample Z - E
5 Sample Z - F
关于python - Pandas 数据帧 : Creating a new column based on data from other columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74722969/