问题描述
我有一个pandas.core.series.Series
列表。
列表的大小为10.列表中的每个系列都有一个索引和一个值。
我想与列表中的10个pandas.core.series.Series
相交,以获得所有值的最终DataFrame,并将公共索引作为新索引。
对于与原始列表中的元素对应的值,它应该有10列。
有没有pythonic方法来做这个而不是多次使用系列交集?
1楼
命令pd.concat
专门用于此目的。
请注意,在我的示例中,索引都是相同的,但pd.concat
将自动与索引相交。
## generate data
series_list = [pd.Series(np.random.randn(10)) for x in range(10)]
## output example
In [13]: pd.concat(series_list, axis=1)
Out[13]:
0 1 2 3 4 5 6 \
0 0.859256 -2.283672 0.539067 -0.745864 -2.658162 0.353576 0.482614
1 0.999823 0.155528 -0.579598 0.356863 -0.135860 -0.406351 0.888127
2 -0.727666 -1.571515 0.639486 0.394803 0.478038 0.244531 -1.422910
3 0.582662 1.469884 -3.337026 -0.407253 -2.351327 -0.676233 0.018020
4 1.173179 0.211506 -0.360274 -0.299976 -0.479131 1.735279 0.549555
5 -1.589117 -2.037131 -1.843098 0.066606 0.166258 -1.444472 1.534016
6 -0.275819 -0.978669 2.299632 0.807746 -1.358762 1.190374 -0.668204
7 0.933350 -0.536032 1.285759 0.677269 -0.385078 -0.357661 2.085237
8 0.167977 0.090950 1.220945 1.085571 -0.486978 0.848816 -0.559023
9 -1.006001 -0.168631 1.501675 -0.351409 1.719402 0.337982 -0.776788
7 8 9
0 0.015773 2.356775 -1.288013
1 1.292615 1.272147 0.347335
2 1.410002 -0.364822 -0.372589
3 -2.306940 -0.816853 2.565389
4 -1.815764 -1.547376 1.104517
5 -1.561681 -0.373882 0.582264
6 -1.272563 -0.317298 -0.446855
7 1.179011 -1.402293 0.424124
8 -1.839095 1.278204 -1.166991
9 0.950620 0.681596 -1.908053
2楼
考虑一系列的los
los = [
pd.Series([1, 2, 3], [0, 2, 4], name='A'),
pd.Series([1, 2, 3], [1, 2, 4], name='B'),
pd.Series([1, 2, 3], [4, 3, 2], name='C')
]
使用参数join='inner'
pd.concat
得到指数的交叉点需要'inner'
pd.concat(los, axis=1, join='inner')
A B C
4 3 3 1
2 2 2 3
如果我们没有使用join='inner'
pd.concat(los, axis=1)
A B C
0 1.0 NaN NaN
1 NaN 1.0 NaN
2 2.0 2.0 3.0
3 NaN NaN 2.0
4 3.0 3.0 1.0
哪个不是交集