我有以下字典,其中包含数据框作为值,每个字典总是具有相同的列数(1),具有相同的标题
test = {'A': pd.DataFrame(np.random.randn(10), index=range(10),columns=['values']),
'B': pd.DataFrame(np.random.randn(6), index=range(6),columns=['values']),
'C': pd.DataFrame(np.random.randn(11), index=range(11),columns=['values'])}
由此,我想创建一个数据框,其中索引值是字典的键值(所以A,B,C),列是所有字典中当前索引值的并集(所以这种情况0,1,2,3 ... 10)。该数据帧的值将是相应的值'从每行对应的数据框,以及空白,NaN
有一种方便的方法吗?
答案 0 :(得分:3)
IIUC,使用http.verify_mode = OpenSSL::SSL::VERIFY_PEER
,pd.concat
和keys
:
unstack
更好的是,
pd.concat([test[i] for i in test], keys=test.keys()).unstack(1)['values']
输出:
pd.concat(test).unstack(1)['values']
答案 1 :(得分:0)
不要过于复杂化: 只需使用concat和transpose
pd.concat(test, axis=1).T
0 1 2 3 4 5 \
A values -0.592711 0.266518 -0.774702 0.826701 -2.642054 -0.366401
B values -0.709410 -0.463603 0.058129 -0.054475 -1.060643 0.081655
C values 1.384366 0.662186 -1.467564 0.449142 -1.368751 1.629717
6 7 8 9 10
A values 0.431069 0.761245 -1.125767 0.614622 NaN
B values NaN NaN NaN NaN NaN
C values 0.988287 -1.508384 0.214971 -0.062339 -0.011547
如果您正在处理系列而不是1列DataFrame,那么从...开始会更有意义。
test = {'A': pd.Series(np.random.randn(10), index=range(10)),
'B': pd.Series(np.random.randn(6), index=range(6)),
'C': pd.Series(np.random.randn(11), index=range(11))}
pd.concat(test,axis=1).T
0 1 2 3 4 5 6 \
A -0.174565 -2.015950 0.051496 -0.433199 0.073010 -0.287708 -1.236115
B 0.935434 0.228623 0.205645 -0.602561 1.860035 -0.921963 NaN
C 0.944508 -1.296606 -0.079339 0.629038 0.314611 -0.429055 -0.911775
7 8 9 10
A -0.704886 -0.369263 -0.390684 NaN
B NaN NaN NaN NaN
C 0.815078 0.061458 1.726053 -0.503471