我有以下数据框并想将它拆开,生成一个系列x和一个系列y,time作为索引和value数据:
var time value
0 x 0 11
1 y 0 123
2 x 1 12
3 y 1 124
4 x 2 13
5 y 2 125
这是我的代码:
import pandas as pd
df = pd.DataFrame({
'time': [0,0,1,1,2,2],
'var': list('xyxyxy'),
'value': [11,123,12,124,13,125]})
for col in ['x', 'y']:
s = pd.Series(
data=df.loc[df['var'] == col, 'value'],
index=df.loc[df['var'] == col, 'time'],
name=col)
print(s)
这是输出:
time
0 11.0
1 NaN
2 12.0
Name: x, dtype: float64
time
0 NaN
1 123.0
2 NaN
Name: y, dtype: float64
但我希望这个系列是
time
0 11.0
1 12.0
2 13.0
Name: x, dtype: float64
time
0 123.0
1 124.0
2 125.0
Name: y, dtype: float64
显然熊猫没有将time-axis 正确对齐到value-axis。根据我的理解,每个.loc应该只返回相应的 3 个元素并将它们组合在一起作为新构建的系列的索引和数据。
为什么这不发生?
获得我想要的结果的最简单方法是什么?
四季花海
繁星coding
烙印99
相关分类