这是我拥有的 2 个数据框:
数据框1:
Key1 Key2 Key3 Key4 Key5
Value1 Value2 Value3 Value4 Value5
数据框2:
Key1 Key2 Key3
Value1 Value2 Value3
Value4 Value5 Value6
预期结果:
Key1 Key2 Key3 Key4 Key5
Value1 Value2 Value3 Value4 Value5
Key1 Key2 Key3
Value1 Value2 Value3
Value4 Value5 Value6
如何在不合并键的情况下加入这两个数据框?
示例代码
在您的示例中,我假设顶行是列。
import pandas as pd
data1 = {'Key1': ['Value1'], 'Key2': ['Value2'], 'Key3': ['Value3'],
'Key4': ['Value4'], 'Key5': ['Value5']}
data2 = {'Key1': ['Value1', 'Value4'],
'Key2': ['Value2', 'Value5'],
'Key3': ['Value3', 'Value6']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
代码
out = pd.concat([df1, df2.columns.to_frame().T, df2], ignore_index=True)
出
Key1 Key2 Key3 Key4 Key5
0 Value1 Value2 Value3 Value4 Value5
1 Key1 Key2 Key3 NaN NaN
2 Value1 Value2 Value3 NaN NaN
3 Value4 Value5 Value6 NaN NaN
假设您的输入 DataFrame 具有 Key1/Key2/... 作为列标题,您可以首先将它们移动到行,然后
concat
。
为此,有两个选择:
dfs = [df1, df2]
out = pd.concat([d.T.reset_index().T for d in dfs], ignore_index=True)
或者:
dfs = [df1, df2]
out = pd.concat([pd.concat([pd.DataFrame([d.columns]),
pd.DataFrame(d.to_numpy())])
for d in dfs],
ignore_index=True)
可重复输入:
df1 = pd.DataFrame({'Key1': ['Value1'], 'Key2': ['Value2'], 'Key3': ['Value3'],
'Key4': ['Value4'], 'Key5': ['Value5']})
df2 = pd.DataFrame({'Key1': ['Value1', 'Value4'],
'Key2': ['Value2', 'Value5'],
'Key3': ['Value3', 'Value6']})