所有数据帧(dfs)都包含一个名为“id”的键列。
即使使用后缀选项,pd.merge也不是一个可行的选择。
每个数据帧中都有超过4万个列,因此先绑定列再删除多余列(如通过suffix_x
选项)不是一个可选方案。每个数据帧通过“id”列确定的共有行数恰好为5万条。
下面是一个包含两个共有列的最小示例:
df1 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col3': [786, 787, 777],
})
df2 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col4': [11, 44, 77],
})
df3 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col5': [1786, 1787, 1777],
})
最终合并后的结果应为:
finaldf = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col3': [786, 787, 777],
'col4': [11, 44, 77],
'col5': [1786, 1787, 1777],
})
翻译成中文:
所有数据帧均有名为“id”的关键列。
即使配合后缀选项,pd.merge也无法作为一个有效的解决方案。
由于每个数据帧中存在超过4万个列,所以在绑定列之后再删除多余的列(例如通过suffix_x
选项处理)不是一种可选项。各数据帧中均通过“id”列标识出完全相同的5万行记录。
以下是包含两个共有列的最简化示例:
df1 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col3': [786, 787, 777],
})
df2 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col4': [11, 44, 77],
})
df3 = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col5': [1786, 1787, 1777],
})
最后合并得到的数据帧应该是:
finaldf = pd.DataFrame({
'id': ['a', 'b', 'c'],
'col1': [123, 121, 111],
'col2': [456, 454, 444],
'col3': [786, 787, 777],
'col4': [11, 44, 77],
'col5': [1786, 1787, 1777],
})