gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:58 25 4
gpt4 key购买 nike

如果某个字符串是另一列的子字符串,我想创建一个新列。假设我有一个包含一列的 DataFrame df['A']:

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

和一个列表:

check = ['AA', 'BB']

现在我想创建列 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

我如何在遍历列表(实际上比两个项目更大)或通过应用函数来完成此任务?

最佳答案

设置

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

解决方案

df_expanded = df.A.str.split(expand=True)

checked = pd.concat(
[df_expanded.apply(lambda s: s.str.rfind(chk)) for chk in check],
keys=check
)

where = (checked >= 0).any(axis=1).unstack(0)
where = where.mul(where.columns.to_series(), axis=1)

final = pd.Series()
where.replace('', np.nan, inplace=True)
for c in where.columns:
final = final.combine_first(where.loc[:, c])

df['B'] = final

print df

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

关于python - Pandas :找到部分字符串并在新列中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504564/

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