python - Pandas 数据帧 : Creating a new column based on data from other columns

标签 python pandas dataframe

我有一个 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 indexingffill :

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/

相关文章:

python - 获取 : TypeError: 'dict_values' object does not support indexing when using python 3. 2.3

python - 使用 Flask 创建 Web 服务器,输出可用于 GET 请求的内容

python - 使用一行多重赋值在列表中交换元素

python - 将现有类别列表中的类别列添加到 pandas 数据框中

python - 如何计算两个 Pandas 时间轴向量之间的 PIL 逊相关性

python - 提交时更新按钮文本以延长加载时间

python - Pandas:将列中的列表扩展到不同的行

python - 计算列表中存储的值出现的行数

python - 根据多数规则删除重复项

python - 将字典的字典转换为 pandas 数据框