我正在研究 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] 删除。
我来说两句