gpt4 book ai didi

python - 如果字符串包含在另一个字符串中,则追加列值

转载 作者:行者123 更新时间:2023-12-02 18:16:28 26 4
gpt4 key购买 nike

我想向数据帧 df 添加一个新列 a3:如果“b”的字符串包含数据帧 df2 中的“b2”字符串,则新列 a3 应附加 df2 的 a2 中的值。

第一个数据帧 df:


d = {'a': [100, 300], 'b': ["abc", "dfg"]}
df = pd.DataFrame(data=d, index=[1, 2])

print(df)
a b
1 100 abc
2 300 dfg

第二个数据帧 df2:


d2 = {'a2': ["L1", "L2", "L3"], 'b2': ["bc", "op", "fg"]}
df2 = pd.DataFrame(data=d2, index=[1, 2, 3])

print(df2)
a2 b2
1 L1 bc
2 L2 op
3 L3 fg

输出应如下所示:

print(df)
a b a3
1 100 abc L1
2 300 dfg L3

我尝试了嵌套 for 循环,但没有成功。

for i in df.b:
for ii in df2.b2:
for iii in df2.a3:
if ii in i:
df["a3"]=iii

最佳答案

您需要测试所有组合。您仍然可以利用 pandas 矢量 str.contains:

common = (pd.DataFrame({x: df['b'].str.contains(x) for x in df2['b2']})
.replace({False: pd.NA})
.stack()
.reset_index(level=1, name='b2')['level_1'].rename('b2')
)
# 1 bc
# 2 fg
# Name: b2, dtype: object

df.join(common).merge(df2, on='b2')

输出:

     a    b  b2  a2
0 100 abc bc L1
1 300 dfg fg L3

关于python - 如果字符串包含在另一个字符串中,则追加列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71525034/

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