【问题标题】:Combining two Dataframes with same column names, but different MultiIndex组合两个具有相同列名但 MultiIndex 不同的 Dataframe
【发布时间】:2022-10-18 21:23:29
【问题描述】:

我有两个不同的 DataFrames 我想组合,但我无法得到我正在寻找的答案。下面给出了 MWE。

import numpy as np
import pandas as pd

index_tuple1 = [('car', 'green'), ('car', 'red'), ('boat', 'green')]
index1 = pd.MultiIndex.from_tuples(index_tuple1, names=['Vehicle', 'Color'])
data1 = np.array([[1,2], [3,4], [7,8]])
df1 = pd.DataFrame(data1, index=index1, columns=['2022-05-09', '2022-10-17'])

index_tuple2 = [('car', 'blue'), ('boat', 'blue')]
index2 = pd.MultiIndex.from_tuples(index_tuple2, names=['Vehicle', 'Color'])
data2 = np.array([[5,6], [9,0]])
df2 = pd.DataFrame(data2, index=index2, columns=['2022-05-09', '2022-10-17'])

print(df1)
print(df2)


Output:
               2022-05-09  2022-10-17
Vehicle Color
car     green           1           2
        red             3           4
boat    green           7           8

               2022-05-09  2022-10-17
Vehicle Color
car     blue            5           6
boat    blue            9           0

我希望看到的输出如下所示。我已经尝试过 concat、merge 和 join,但是我得到一个用 NaN 填充的 DataFrame 或“ValueError:列重叠但没有指定后缀:Index(['2022-05-09', '2022-10-17']

               2022-05-09  2022-10-17
Vehicle Color
car     green           1           2
        red             3           4
        blue            5           6
boat    green           7           8
        blue            9           0 

【问题讨论】:

    标签: python pandas dataframe merge concatenation


    【解决方案1】:

    IIUC 用途:

    df = pd.concat([df1, df2]).sort_index()
    print (df)
                   2022-05-09  2022-10-17
    Vehicle Color                        
    boat    blue            9           0
            green           7           8
    car     blue            5           6
            green           1           2
            red             3           4
    

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2020-01-02
      • 1970-01-01
      • 2020-11-17
      • 2021-05-29
      • 2014-01-18
      • 2020-06-21
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多