我有两个具有相同(不连续)指标的级数s1和s2。我如何结合s1和s2是一个DataFrame的两列,并保持一个索引作为第三列?
当前回答
我认为concat是一个很好的方法。如果它们存在,它使用Series的name属性作为列(否则它只是简单地为它们编号):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
注意:这扩展到2系列以上。
其他回答
我认为concat是一个很好的方法。如果它们存在,它使用Series的name属性作为列(否则它只是简单地为它们编号):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
注意:这扩展到2系列以上。
示例代码:
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允许您从字典中创建一个DataFrame,其值为Series,键为列名。当它找到一个Series作为值时,它使用Series索引作为DataFrame索引的一部分。这种数据对齐是Pandas的主要优势之一。因此,除非您有其他需要,否则新创建的DataFrame具有重复的值。在上面的例子中,data['idx_col']与data.index拥有相同的数据。
我不确定我完全理解你的问题,但这是你想做的吗?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
(指数= s1。这里甚至不需要索引)
如果两者有相同的索引,为什么不直接使用.to_frame呢?
> = v0.23
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
我使用pandas将我的numpy数组或iseries转换为一个数据帧,然后添加和添加额外的列键作为“预测”。如果你需要将数据帧转换回列表,则使用values.tolist()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 确定每列中NA值的个数
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 如何结合多个条件子集数据帧使用“或”?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式