在熊猫数据框中匹配单词(以加号开头)

时间:2018-08-08 13:08:10

标签: python pandas

我有两个熊猫数据框。我想在两个数据帧中都存在的一个特定列(“关键字”)中找到匹配的字符串。

keyword                     adGroup     goal6Value   adCost
[aaaa]                      (not set)   0            0.0
+bb +bb                     (not set)   0            0.0
+cc +cc                     (not set)   2072         0.0
[dddd]                      (not set)   0            0.0

第二个数据帧:

keyword                     status      Max          Min
[aaaa]                      (not set)   0.1          0.0
+bb +bb                     (not set)   0.2          0.0
+ff +ff                     (not set)   0.1          0.0
[gggg]                      (not set)   0.3          0.0

如果两个数据框中的关键字均可用(关键字列),我希望输出返回所有列。输出应如下所示:

keyword    status       Max     Min    adGroup    goal6Value   adCost
[aaaa]    (not set)     0.1     0.0   (not set)   0            0.0
+bb +bb   (not set)     0.2     0.0   (not set)   0            0.0

我已将两个数据帧的关键字列的数据类型更改为字符串。 我尝试了以下选项:

pd.merge(df1, df2, on='keyword')

df1.set_index('keyword').join(df2.set_index('keyword'))

但是,两个选项都只将关键字与方括号匹配,即使两个数据框中都可用,也不返回以加号开头的关键字。

在熊猫中,是否也可以将关键字与加号匹配?

3 个答案:

答案 0 :(得分:1)

我无法重新创建您的问题,以下测试可以正常进行。我建议在两个数据帧(string p = get_string("plaintext: "); int k = strtol(argv[1], NULL, 10); printf("ciphertext: "); for (int i = 0; i < strlen(p); i++) { printf("%c", (p[i] + k) % 26); } | df1['keyword'] = df1['keyword'].astype(object))中将关键字列强制转换为dtype对象

dtype对象似乎对我有用,如下所示:

df2['keyword'] = df2['keyword'].astype(object)

或者,您的关键字列上可能有一些前导/滞后空格,这些空格在数据框之间可能不存在。可以使用Pandas.series.str.strip()进行补救。 Pandas docs

答案 1 :(得分:0)

我无法重新创建该问题,因为我可以合并两个dfs

df1=pd.DataFrame({'keyword':['[aaaa]','+bbbb'],'adGroup':['something','something']})
df2=pd.DataFrame({'keyword':['[aaaa]','+bbbb'],'adGroup':['something2','something2']})
df1.merge(df2,on='keyword')

    adGroup_x   keyword adGroup_y
0   something   [aaaa]  something2
1   something   +bbbb   something2

也许您需要更改类型。

答案 2 :(得分:-1)

已编辑

pd.merge工作正常,我也无法重现该问题

pd.merge(df1, df2, on='keyword')