gpt4 book ai didi

python - 基于部分startswith匹配合并两个数据帧

转载 作者:行者123 更新时间:2023-12-04 15:59:04 24 4
gpt4 key购买 nike

我有两个数据框,我想根据 start 的部分匹配来合并(在下面的示例中,df2.B 中以 df1.A 开头的行,这些列的值是字符串,可以是任何长度)。

我可以通过以下方式做到这一点,但在我的实际数据帧上非常慢,每个数据帧都有数百万行。

df1 = pd.DataFrame({'A': ['a', 'b', 'cc']})

df2 = pd.DataFrame({'B': ['ar', 'd', 'ar'],
'C': ['x1', 'x1', 'x2']})

df_m = pd.DataFrame(columns=['A','B','C'])
for index, row in df1.iterrows():
df_ = df2[df2['B'].str.startswith(row['A'])]
if not df_.empty:
df_['A'] = row['A']
df_m = df_m.append(df_)

df_m:

    A   B   C
0 a ar x1
2 a ar x2

最佳答案

使用,Series.str.extractdf2 中从 df1 中的 A 列开始的 B 列中提取 key,然后使用 DataFrame.merge合并 column A 上的 datframe df1key 列上的 df2:

key = df2['B'].str.extract('^(' + '|'.join(df1['A']) + ')')
df3 = df1.merge(df2.assign(key=key), left_on='A', right_on='key').drop('key', 1)

结果:

df3
A B C
0 a ar x1
1 a ar x2

关于python - 基于部分startswith匹配合并两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62560753/

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