Zer*_*ero 46 python multi-index pandas
给出一个数据帧字典,如:
dict = {'ABC': df1, 'XYZ' : df2} # of any length...
Run Code Online (Sandbox Code Playgroud)
其中每个数据框具有相同的列和相似的索引,例如:
data Open High Low Close Volume
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149
Run Code Online (Sandbox Code Playgroud)
将所有数据帧合并为一个的最简单方法是什么,使用多索引,如:
symbol ABC XYZ
data Open High Low Close Volume Open ...
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 ...
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 ...
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 ...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些方法 - 例如,对于每个数据帧,用多索引替换列.from_product(['ABC', columns])然后连接axis=1,但没有成功.
Kar*_* D. 66
你可以这样做concat(keys参数将创建分层列索引):
d = {'ABC' : df1, 'XYZ' : df2}
print pd.concat(d.values(), axis=1, keys=d.keys())
XYZ ABC \
Open High Low Close Volume Open High
Date
2002-01-17 0.18077 0.18800 0.16993 0.18439 1720833 0.18077 0.18800
2002-01-18 0.18439 0.21331 0.18077 0.19523 2027866 0.18439 0.21331
2002-01-21 0.19523 0.20970 0.19162 0.20608 771149 0.19523 0.20970
Low Close Volume
Date
2002-01-17 0.16993 0.18439 1720833
2002-01-18 0.18077 0.19523 2027866
2002-01-21 0.19162 0.20608 771149
Run Code Online (Sandbox Code Playgroud)
真的concat想要列表,所以以下是等价的:
print(pd.concat([df1, df2], axis=1, keys=['ABC', 'XYZ']))
Run Code Online (Sandbox Code Playgroud)
pandas.concat现在自动执行此操作:
import pandas as pd
index = ["row1", "row2"]
df_a = pd.DataFrame({"foo": range(0, 2), "bar": range(2, 4)}, index)
df_b = pd.DataFrame({"foo": range(4, 6), "bar": range(6, 8)}, index)
pd.concat({"A": df_a, "B": df_b}, axis=1) # axis="columns" also works
Run Code Online (Sandbox Code Playgroud)
A B
foo bar foo bar
row1 0 2 4 6
row2 1 3 5 7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23880 次 |
| 最近记录: |