【发布时间】:2021-02-22 22:38:59
【问题描述】:
我正在尝试将 pandas 中的两个数据框合并到一个显示地理区域名称的公共列上。该列具有相似的值但不相同。例如,一个 DataFrame 中的值为London,而另一个为London / Greater London - 它们被视为不同的值,但在合并时应视为相同的值。
In[1]:
import pandas as pd
df1 = pd.DataFrame([['London', 2], ['Bristol', 3], ['Liverpool', 6]], columns=['Area', 'B'])
df2 = pd.DataFrame([['London / Greater London', 7], ['Bristol_', 9], ['Liverpool / Liverpool', 1]], columns=['Area', 'B'])
df_merged = pd.merge(df1, df2, on="Area", indicator=True, how='outer')
df_merged
Out[1]:
Area B_x B_y _merge
0 London 2.0 NaN left_only
1 Bristol 3.0 NaN left_only
2 Liverpool 6.0 NaN left_only
3 London / Greater London NaN 7.0 right_only
4 Bristol_ NaN 9.0 right_only
5 Liverpool / Liverpool NaN 1.0 right_only
理想的输出如下所示:
Out[1]:
Area B_x B_y _merge
0 London 2.0 7.0 both
1 Bristol 3.0 9.0 both
2 Liverpool 6.0 1.0 both
有没有办法根据值的某种程度的相似性来合并这两个数据框,以便 London 和 London / Greater London 值被视为相同的值?谢谢!
【问题讨论】:
标签: python pandas dataframe merge