我有两个具有相同(非连续)索引的系列s1
和s2
。如何将s1
和s2
组合为DataFrame中的两列,并将其中一个索引保留为第三列?
发布于 2013-08-05 23:53:14
Pandas将自动对齐这些连续传递的参数,并创建联合索引,它们在这里恰好是相同的。reset_index
将索引移动到列。
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
发布于 2013-08-05 23:50:26
示例代码:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
Pandas允许您使用Series
作为值和列名作为键,从dict
创建DataFrame
。当它找到一个Series
作为值时,它使用Series
索引作为DataFrame
索引的一部分。这种数据对齐是Pandas的主要好处之一。因此,除非您有其他需求,否则新创建的DataFrame
具有重复值。在上面的示例中,data['idx_col']
具有与data.index
相同的数据。
发布于 2013-08-05 23:51:20
我不确定我是否完全理解你的问题,但这是你想要做的吗?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
(这里甚至不需要index=s1.index
)
https://stackoverflow.com/questions/18062135
复制相似问题