检查一个数据帧单元格是否包含另一个数据帧单元格中的值

2024-05-23 19:15:09 发布

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

我正在努力做到以下几点:

给定df1中的一行,如果str(row['code'])位于df2['code']的任何行中,那么我希望df2['lamer\u url\u 1']和df2['shopee\u url\u 1']中的所有行都采用df1中相应的值。 然后继续df1['code']的下一行

''

===============

初始表格:

df1型

     code                  lamer_url_1                 shopee_url_1

0  L61B18H089                       b                            a

1  L61S19H014                       e                            d

2  L61S19H015                       z                            y

df2型

  code             lamer_url_1   shopee_url_1   lamer_url_2  shopee_url_2

0 L61B18H089-F1424         NaN           NaN          NaN           NaN

1 L61S19H014-S1500         NaN           NaN          NaN           NaN

2 L61B18H089-F1424         NaN           NaN          NaN           NaN

===============

预期产量:

df2型

   code              lamer_url_1  shopee_url_1  lamer_url_2  shopee_url_2
0  L61B18H089-F1424           b             a          NaN           NaN

1  L61S19H014-S1500           e             d          NaN           NaN

2  L61B18H089-F1424           b             a          NaN           NaN

''


Tags: urlcodenan表格rowdf1df2str
1条回答
网友
1楼 · 发布于 2024-05-23 19:15:09

我假设“df2”中“code”的公共部分是“-”之前的字符。我还假设从“df1”我们想要“lamer\u url\u 1”、“shopee\u url\u 1”,从“df2”我们想要“lamer\u url\u 2”、“shopee\u url\u 2”(如果我错了,请在注释中纠正我,以便我可以润色代码):

df1.set_index(df1['code'], inplace=True)
df2.set_index(df2['code'].apply(lambda x: x.split('-')[0]), inplace=True)
df2.index.names = ['code_join']

df3 = pd.merge(df2[['code', 'lamer_url_2', 'shopee_url_2']],
               df1[['lamer_url_1', 'shopee_url_1']],
               left_index=True, right_index=True)

相关问题 更多 >