gpt4 book ai didi

python - 在数据框中添加新行,并有条件分割前一行

转载 作者:行者123 更新时间:2023-12-01 08:41:04 25 4
gpt4 key购买 nike

如果特定列值中存在“或”条件,则必须根据数据框中的先前值拆分并创建新行。尝试使用拆分和连接无法获得所需的输出,非常感谢任何帮助
输入

  col1   col2           col3              col4
0 x bca or cba value1 or null x1 or x2
1 y bca value2 x1

输出

   col1   col2           col3        col4
0 x bca value1 x1
1 x cba null x2
2 y bca value2 x1

最佳答案

用途:

cols = df.columns

df = (df.join(df.pop('col2')
.str.split(' or ', expand=True)
.stack()
.reset_index(level=1, drop=True)
.rename('col2'))
).reset_index(drop=True).reindex(columns=cols)
print (df)
col1 col2 col3
0 x bca value1
1 x cba value1
2 y bca value2

说明:

  1. 第一pop用于提取的列 splitexpand = True 转换为 DataFrame
  2. 的列
  3. reshape stack
  4. reset_index用于删除 MultiIndex 的第一级
  5. 用新列名称重命名 系列
  6. 然后join到原始 df
  7. 功能reset_index对于唯一索引是必需的
  8. 最后reindex对于相同顺序的列名称

编辑:

df = (df.set_index('col1')
.stack()
.str.split(' or ', expand=True)
.stack()
.unstack(1)
.reset_index(level=1, drop=True)
.reset_index()

)
print (df)

col1 col2 col3 col4
0 x bca value1 x1
1 x cba null x2
2 y bca value2 x1

关于python - 在数据框中添加新行,并有条件分割前一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com