python - 在具有固定索引的空数据帧上连接多个数据帧,合并列或附加这些列

标签 python pandas dataframe join

我有一个带有范围索引但没有数据的数据框,在实际数据中索引是一个时间范围。

例如

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中看到的输出。

Figures

最佳答案

你可以groupby索引并聚合 first :

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/

相关文章:

r - 计算从数据帧的上一组中添加和删除的新元素

python - 将我的 calendarID 更改为 'primary' 时出错?

javascript - Python 请求句柄 url 包含回调

python - python 中的数学公式不起作用

python - Pandas dataframe 合并的一个特例

python - 使用 python pandas 读取 sharepoint excel 文件

python - 在 Python 中,如何将字典转换为 df 列,其中键与 df.index 值匹配?

python - 对列值进行分组 2 小时

python - 如何注释用 Prince 库绘制的散点

python - 如何有效地替换 pandas DataFrame 上的值?