python - 如何将两个二维数据框合并为一个多索引多维 Pandas 数据框?

标签 python pandas dataframe

我有两个相同大小的数据框,如下所示:

cost_type1 = pd.DataFrame([[1,2,3,4], [100,200,300,400]]).transpose()
cost_type2 = pd.DataFrame([[1,4,9,25], [10,40,90,250]]).transpose()

由于这些数据框都与成本相关,所以我想将它们合并到一个结构中,这样我就可以说类似 cost[i] 的内容并获得类型 i 的成本矩阵。

我尝试如下使用多索引:

timestamps =["2014-01-01", "2014-02-01"]
categories = ["A", "B","C","D"]
idx = pd.MultiIndex.from_product([timestamps,categories], names=["ts", 
"cat"])
df = pd.DataFrame(index=idx, columns=["col1", "col2"])

我得到一个像这样的漂亮的空数据框:(out)

               col1 col2
ts         cat          
2014-01-01 A    NaN  NaN
           B    NaN  NaN
           C    NaN  NaN
           D    NaN  NaN
2014-02-01 A    NaN  NaN
           B    NaN  NaN
           C    NaN  NaN
           D    NaN  NaN

但是,我无法用已有的两个“较小”数据框填充“大”数据框。我试过这样的事情,但我没有成功:

df.loc["2014-01-01",:] = newdf1
df.loc["2014-02-01",:] = newdf2

有大佬知道怎么解决吗?谢谢!

最佳答案

使用concat为每个 DataFrame 创建新索引,因此不需要空 DataFrame:

timestamps = ["2014-01-01", "2014-02-01"]
categories = ["A", "B","C","D"]
idx = pd.MultiIndex.from_product([timestamps,categories], names=["ts", "cat"])

df = pd.concat([cost_type1.set_index([categories]), 
                cost_type2.set_index([categories])], keys=timestamps)
df.columns=["col1", "col2"]
df.index.names=['ts','cat']

如果输入是 DataFrames 列表 使用列表理解:

dfs = [cost_type1, cost_type2]
df = pd.concat([x.set_index([categories]) for x in dfs], keys=timestamps)
df.columns=["col1", "col2"]
df.index.names=['ts','cat']
print (df)
                col1  col2
ts         cat            
2014-01-01 A       1   100
           B       2   200
           C       3   300
           D       4   400
2014-02-01 A       1    10
           B       4    40
           C       9    90
           D      25   250

关于python - 如何将两个二维数据框合并为一个多索引多维 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781669/

相关文章:

Python SOCKS5 代理客户端 HTTPS

python - 计算列中的唯一值

python - Python-打印回溯

python - 使用文件强制转换和输入环境变量

python - 根据 Pandas 中唯一行值的数量添加新列

python - 如何使用 Nan 数据将 String 转换为 Int

python - Groupby 在 pandas 中求和并根据条件/要求自定义 df

python - 如何对 Pandas 对象执行切片(使用 ix、loc、iloc)操作(排除某些指定索引)

python - 获取 Pandas 数据框中重复行的所有ID

python - 由于缺乏传递引用,如何在 python 2 中保持干燥