我的新手与 Pandas 的斗争仍在继续,所以我想问一下。
我有两个 Excel 文件,如下所示:
列名称可能包含第二个 Excel 文件的西类牙语和英语列中不存在的值,而西类牙语和英语列可能包含列名称中不存在的值。我想要所有可能的值。
我的第二个文件如下所示:
我想要做的是用值填充第一个数据帧的最后一列,所以它看起来像这样:
我一直在尝试这段代码,但它不起作用:
df2 = pd.melt(df2, id_vars=['group'], value_vars=['en', 'sp'], value_name='lan')
merged_df = pd.merge(df1, df2, left_on='lang', right_on='lan')[['name', 'group', 'lang']]
最佳答案
考虑你的例子
df = pd.DataFrame([['red', 'rojo', 2], ['blue', 'azul', 1]], columns = ['english', 'spanish', 'group'])
df2 = pd.DataFrame([['red', 2], ['blue', 1], ['azul', 1]], columns = ['name', 'group'])
你可以这样做:
eng_df = pd.merge(df2, df, how='inner', left_on=['group', 'name'], right_on=['group','english'] )
eng_df['leng'] = 'en'
sp_df = pd.merge(df2, df, how='inner', left_on=['group', 'name'], right_on=['group','spanish'] )
sp_df['leng'] = 'sp'
eng_df.append(sp_df)[['name','group','leng']].reset_index()
也许不是最直接的解决方案,但至少它有效。
如果不需要,您可以跳过加入“组”,但我认为这很重要,因为您在示例中提到了它。
关于python - 将数据与另一个数据框中两列中的数据进行比较以填充第一个数据框中的第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66681913/