pandas:找到部分字符串并在新列中使用它

2024-10-06 12:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个新列,以防某个字符串是另一个列的子字符串。假设我有一个包含一列df['a']的数据帧:

         A           
0    bbh AA chd     
1    d10 DKL BB
2    kj AAdbl 5
3    kBB d7d dl

还有一份清单:

^{pr2}$

现在我想创建df['B']列,如果在df['A']中找到这些值,它将接管列表中的值:

      A             B
0    bbh AA chd     AA
1    d10 DKL BB     BB
2    kj AAdbl 5     AA
3    kBB d7d dl     BB

如何在循环查看列表(实际上列表比两个条目大)或应用函数时完成此任务?在


Tags: 数据字符串df列表aadlbbkj
2条回答

设置

import pandas as pd

text = """A
bbh AA chd
d10 DKL BB
kj AAdbl 5
kBB d7d dl"""

df = pd.read_csv(StringIO(text))

check = ['AA', 'BB']

print df

            A
0  bbh AA chd
1  d10 DKL BB
2  kj AAdbl 5
3  kBB d7d dl

解决方案

^{pr2}$

尝试使用iterrows遍历这些行,检查这些行是否包含检查列表中的任何元素,然后将其放入新列中。在

for idx, row in df.iterrows():
    for c in check:
        if c in row['A']:
            df.ix[idx, 'B'] = c

输出:

^{pr2}$

有一点困惑:如果df同时包含AA和{},怎么办?在这种情况下,我的代码可能需要根据您希望如何定义输出行为进行一些修改。在

相关问题 更多 >