我有 2 df 一個是
df1 = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
df2 = {'col_1': [3, 2, 1, 3]}
我想要的結果如下
df3 = {'col_1': [3, 2, 1, 3], 'col_2': ['a', 'b', 'c', 'a']}
新 df 的第 2 列與 df1 的第 2 列相同,具體取決于 df1 的值。
uj5u.com熱心網友回復:
在將第一列設定為索引后,通過映射來自 df1 的值來添加新列:
df3 = df2.copy()
df3['col_2'] = df2['col_1'].map(df1.set_index('col_1')['col_2'])
輸出:
col_1 col_2
0 3 a
1 2 b
2 1 c
3 3 a
uj5u.com熱心網友回復:
您可以merge在將 dicts 轉換為 df 后使用pd.DataFrame():
output = pd.DataFrame(df2)
output = output.merge(pd.DataFrame(df1),on='col_1',how='left')
或者單線:
output = pd.DataFrame(df2).merge(pd.DataFrame(df1),on='col_1',how='left')
輸出:
col_1 col_2
0 3 a
1 2 b
2 1 c
3 3 a
uj5u.com熱心網友回復:
您可以應用一個函式來df2['col_1']查找每個數字的相應值
df3 = df2[['col_1']]
df3['col_2'] = df3['col_1'].apply(lambda x: df1.loc[df1['col_1']==x,'col_2'].values[0])
輸出:
col_1 col_2
0 3 a
1 2 b
2 1 c
3 3 a
uj5u.com熱心網友回復:
這可能是一種簡單的方法。
# use df1 to create a lookup dictionary
lookup = df1.set_index("col_1").to_dict()["col_2"]
# look up each value from df2's "col_1" in the lookup dict
df2["col_2"] = df2["col_1"].apply(lambda d: lookup[d])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/381305.html
