python - Pandas 根据另一列中的连续值连接列中的字符串

标签 python pandas

我在 DataFrame col1 和 col2 中有两个列,我需要生成结果列。 如图所示,每个 FD 都有一些应该填充在结果列中的相关 MS

enter image description here

dict_obj = {'col1': ['FD', 'MS', 'MS', 'FD', 'MS', 'MS', 'MS', 'FD', 'MS', 'MS'], 
            'col2': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']}
df = pd.DataFrame(dict_obj)

最佳答案

您可以使用 GroupBy.agg,加入您的字符串并将其分配回“FD”行:

grp = (df.assign(col3=(df['col1'] == 'FD').cumsum())
         .query("col1 == 'MS'")
         .groupby('col3')['col2'].agg('|'.join))
df.loc[df['col1'] == 'FD', 'result'] = grp.values # grp.to_numpy(); pandas >= 0.24

df
  col1 col2 result
0   FD    A    B|C
1   MS    B    NaN
2   MS    C    NaN
3   FD    D  E|F|G
4   MS    E    NaN
5   MS    F    NaN
6   MS    G    NaN
7   FD    H    I|J
8   MS    I    NaN
9   MS    J    NaN

关于python - Pandas 根据另一列中的连续值连接列中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153068/

相关文章:

python - 使用 '\n' .join(generator) 时添加尾部分隔符

python numpy 创建数据集列 : only add value based on condition otherwise null

python - 如何将结构文本文件转换为 pandas 数据框

python - Pandas 日期时间格式

python - 从另一列中的每一行单元格中搜索字符串,如果找到匹配项,则在 pandas 中找到的匹配项下方插入行

python - 识别相似的 url

python - FMU 模块和方法 get_author()

python - 使用 python docx 迭代 Word 文档中的表格

python - 在 Matplotlib 中单独排序堆积条形图

Python:如何过滤字典?