我有一个带有范围索引但没有数据的数据框,在实际数据中索引是一个时间范围。
例如
df_main = pd.DataFrame(index = pd.RangeIndex(0,15,1))
见图1
我有几个数据帧,它们的列和索引不同,我只想根据索引将它们加入到主数据帧上:
df1 = pd.DataFrame({'value': [1, 2, 3, 5]}, index = pd.RangeIndex(0,4,1))
df2 = pd.DataFrame({'value': [5, 6, 7, 8]}, index = pd.RangeIndex(4,8,1))
df3 = pd.DataFrame({'value2': [9, 8, 7, 6]}, index = pd.RangeIndex(0,4,1))
df4 = pd.DataFrame({'value': [1, 2],'value2': [3, 4],'value3': [5, 6]}, index = pd.RangeIndex(10,12,1))
见图2、3、4、5
我尝试过连接:
display(pd.concat([df_main,df1,df2,df3,df4]))
这给出了您在图 6 中看到的不需要的输出。
我还尝试加入,这导致了我不明白的错误:
ValueError: Indexes have overlapping values: Index(['value', 'value2'], dtype='object')
我想要的是你可以在图7中看到的输出。
最佳答案
pd.concat([df_main, df1, df2, df3, df4]).groupby(level=0).first()
[输出]
value value2 value3
0 1.0 9.0 NaN
1 2.0 8.0 NaN
2 3.0 7.0 NaN
3 5.0 6.0 NaN
4 5.0 NaN NaN
5 6.0 NaN NaN
6 7.0 NaN NaN
7 8.0 NaN NaN
8 NaN NaN NaN
9 NaN NaN NaN
10 1.0 3.0 5.0
11 2.0 4.0 6.0
12 NaN NaN NaN
13 NaN NaN NaN
14 NaN NaN NaN
关于python - 在具有固定索引的空数据帧上连接多个数据帧,合并列或附加这些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56491762/