【发布时间】:2017-11-27 12:25:57
【问题描述】:
我有两个来自不同来源的 CSV 文件,其中包含来自美国每个县的数据。我可以使用县名的公共键将文件合并到一个数据框中,但是这两个文件使用不同的字符串格式。例如,一个文件“df1”具有“旧金山”,而另一个文件“df2”具有“旧金山县”。我需要比较这两列,确定匹配项,然后为合并创建一个相同的键。例如,如果 df1 包含“旧金山”,我需要检查 df2 中的所有行,确定“旧金山县”包含“旧金山”,然后在 df2 中创建一个只有“旧金山”的新键列。”
这是我尝试过的。
我会将数据框与内部连接合并。这两个 CSV 文件的行数不同。我相信下面的操作将只返回匹配的行,这就是我想要的。
merged_df = pd.merge(left=df1, right=df2, left_on="COUNTY", right_on="COUNTY")
我在创建公用密钥时遇到问题。这是我所拥有的:
# Create an empty container to store the data
COUNTY_KEY = []
for row in df2['COUNTY']:
if df1['COUNTY'] in df2['COUNTY']:
COUNTY_KEY.APPEND(df1(['COUNTY']))
else:
COUNTY_KEY.append('0')
# Create the key by adding the new data to df2
df2['COUNTY_KEY'] = COUNTY_KEY
我认为问题在于我正在尝试比较两个对象——两个数据框中的县变量——但我需要进入对象内部并在字符串级别比较它们。
我已经阅读了很多关于合并数据帧的问题和答案,但我还没有发现有人问这个问题——当一个公共密钥存在但不完全匹配时,我们如何合并两个数据帧?
感谢您的帮助!
【问题讨论】: