我有两个熊猫数据框。我想在两个数据帧中都存在的一个特定列(“关键字”)中找到匹配的字符串。
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'))
但是,两个选项都只将关键字与方括号匹配,即使两个数据框中都可用,也不返回以加号开头的关键字。
在熊猫中,是否也可以将关键字与加号匹配?
答案 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')