3 回答
TA贡献1811条经验 获得超5个赞
有更好的方法来实现这一点。如果你想知道你的代码有什么问题,你将一个系列作为数据和索引传递,而是传递一个数组。
for v in df['var'].unique():
s = pd.Series(
data=df.loc[df['var'] == v, 'value'].values,
index=df.loc[df['var'] == v, 'time'].values,
name=col)
print(s)
0 11
1 12
2 13
Name: y, dtype: int64
0 123
1 124
2 125
Name: y, dtype: int64
TA贡献1797条经验 获得超4个赞
这是pivot问题
s=df.pivot(*df.columns)
s
Out[56]:
time 0 1 2
var
x 11 12 13
y 123 124 125
#s['y'],s['x']
TA贡献1829条经验 获得超13个赞
我不知道为什么把一个系列作为你的数据会给你这个结果,但我可以回答你的第二个问题
获得我想要的结果的最简单方法是什么?
您可以将数据转换为列表以获得所需的结果。
for col in ['x', 'y']:
s = pd.Series(
data=df.loc[df['var'] == col, 'value'].tolist(),
index=df.loc[df['var'] == col, 'time'],
name=col)
print(s)
输出:
time
0 11
1 12
2 13
Name: x, dtype: int64
time
0 123
1 124
2 125
Name: y, dtype: int64
这是类似于@Wen 提交的答案的另一种方式(更优雅):
df_new = pd.pivot_table(data=df, columns='var', index='time', values='value')
输出:
var x y
time
0 11 123
1 12 124
2 13 125
然后你可以打电话df_new['x']或df_new['y']。
添加回答
举报