如果同一行中的其他列与某个字符串匹配,Python Pandas 会创建新列

网牛熊

我正在研究 Python Pandas。数据框是这样的:

团体 第 1 组 第 2 组 第 3 组
11abc q q q
q q q q
q 22abc q q

我想创建一个额外的列。如果在同一行中,有一个项目匹配的子字符串“abc”,则将精确值复制到新列。

预期结果:

|Group |  Group1 |  Group2 |  Group3 | NewColumn |
|------|---------|---------|---------|-----------|
|11abc |    q    |    q    |    q    | 11abc     |
|q     |    q    |    q    |    q    | (no value)|
|q     |  22abc  |    q    |    q    | 22abc     |

我用谷歌搜索了一段时间,发现我可以用它pd.series.str.contains('abc')来返回 TRUE。然后我计划遍历列。首先,我首先尝试了一列:

IF df_target[df_target['Group'].str.contains('abc')]:
    df_target['NewColumn'] = df_target['Group']

但是,我遇到错误“ Cannot mask with non-boolean array containing NA / NaN values”。我后退了一步,我不确定我是否走对了方向。我想向社区询问在 Pandas 中执行此类数据转换任务的合适方法是什么?

非常感谢..

耶兹瑞尔

如果可能有多个匹配,您可以使用 join by 过滤行,

df['NewColumn'] = df.apply(lambda x: ', '.join(x[x.str.contains('abc')]), axis=1)
print (df)
   Group Group1 Group2 Group3 NewColumn
0  11abc      q      q      q     11abc
1      q      q      q      q          
2      q  22abc      q      q     22abc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据某个字符串组合是否在同一行的其他列中更改列中的值?(熊猫)

如果两列中的一行包含相同的字符串python pandas

分组并通过在Pandas中随机分配多个字符串来创建新列

Python Pandas:基于组内的最大值创建新列,但使用其他(字符串)列中的值

从同一DataFrame中的其他行创建新的Pandas DataFrame列等于值

为什么创建新的 Pandas 列会导致原始列发生变化?

Python:如果其他两列在同一行中包含“否”字符串,则从行中删除字符串值

Pandas:选择与字符串匹配的行并用该词创建一个新列

Pandas:如果行包含某个字符串,则合并两行

根据JSON中的字符串匹配创建一个新的Pandas列

从一列pandas python中的字符串切片创建新列

Pandas 过滤并创建新列

如何在 Pandas 数据框中创建一个新列,其值由同一行中的其他列确定

从列表中的子字符串创建新的 pandas 列

从Pandas数据框中的其他列创建新列

根据其他列在Pandas DataFrame中创建新列

Python:删除列表中至少由同一列表中其他一个字符串包含的字符串

合并 Pandas 中的列以创建新列

Python:如果数据框的列名包含某个字符串,则将列附加到不同的数据框

选择列(如果它们的任何行包含某个字符串)

比较一个字符串与python同一列中的所有其他字符串

用上一行中的字符串替换列中的零(Python / Pandas)

在Python Pandas中创建新的QuarterEnd列

Pandas DataFrame 乘以列并创建新列

从列的值创建新列-Pandas

遍历pandas列并创建新列

如果列表中的字符串与另一列中的匹配,则创建一个 Pandas 列

如何在pandas数据框中创建新列,并用不同的方式替换每一行中的一部分字符串?

使用上一行的值创建新的Pandas列