我有两个具有相同(不连续)指标的级数s1和s2。我如何结合s1和s2是一个DataFrame的两列,并保持一个索引作为第三列?
当前回答
熊猫将自动对齐这些传递的系列,并创建联合索引 它们在这里是一样的。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
其他回答
请允许我回答这个问题。
将序列转换为数据帧的基本原理是理解这一点
1. 在概念层面上,数据帧中的每一列都是一个系列。
2. 并且,每个列名都是映射到一个序列的键名。
如果你记住了以上两个概念,你可以想到很多方法将序列转换为数据帧。 一个简单的解决方案是这样的:
在这里创建两个系列
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
创建一个空的数据帧,只需要列的名称
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
利用映射概念将序列值放入数据帧中
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
现在检查结果
df.head(5)
我认为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系列以上。
如果您试图连接长度相等但它们的索引不匹配的Series(这是一种常见的情况),那么连接它们将在它们不匹配的地方生成NAs。
x = pd.Series({'a':1,'b':2,})
y = pd.Series({'d':4,'e':5})
pd.concat([x,y],axis=1)
#Output (I've added column names for clarity)
Index x y
a 1.0 NaN
b 2.0 NaN
d NaN 4.0
e NaN 5.0
假设您不关心索引是否匹配,解决方案是在连接两个Series之前重新索引它们。如果drop=False,这是默认值,那么Pandas将把旧索引保存在新数据框架的一列中(为了简单起见,这里省略了索引)。
pd.concat([x.reset_index(drop=True),y.reset_index(drop=True)],axis=1)
#Output (column names added):
Index x y
0 1 4
1 2 5
基于join()的解决方案的简化:
df = a.to_frame().join(b)
我使用pandas将我的numpy数组或iseries转换为一个数据帧,然后添加和添加额外的列键作为“预测”。如果你需要将数据帧转换回列表,则使用values.tolist()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()
推荐文章
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 我如何才能找到一个Python函数的参数的数量?
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误
- 如何检索Pandas数据帧中的列数?
- except:和except的区别:
- 错误:“字典更新序列元素#0的长度为1;2是必需的”