Pandas 将"u"值填入';我不能和groupby一起工作
我需要在pandas dataframe中为每个名称移位列,并用预定义的值填充生成的NA。下面是使用python 2.7编译的代码片段Pandas 将"u"值填入';我不能和groupby一起工作,pandas,python-2.7,Pandas,Python 2.7,我需要在pandas dataframe中为每个名称移位列,并用预定义的值填充生成的NA。下面是使用python 2.7编译的代码片段 将熊猫作为pd导入 d={'Name':['Petro','Petro','Petro','Petro','Mykola','Mykola','Mykola','Mykola','Mykola','Mykyta','Mykyta','Mykyta','Mykyta'], “月”:[1,2,3,4,5,1,2,3,4,5,1,2,3,4,4,5], “价值”:[2
将熊猫作为pd导入
d={'Name':['Petro','Petro','Petro','Petro','Mykola','Mykola','Mykola','Mykola','Mykola','Mykyta','Mykyta','Mykyta','Mykyta'],
“月”:[1,2,3,4,5,1,2,3,4,5,1,2,3,4,4,5],
“价值”:[25,2.5,24.6,28,26.4,35,24,35,22,27,30,30,34,30,23]
}
数据=pd.数据帧(d)
data['ValueLag']=data.groupby('Name').Value.shift(-1,fill_Value=20)
打印数据
运行上面的代码后,我得到以下输出
Month Name Value ValueLag
0 1 Petro 25.0 2.5
1 2 Petro 2.5 24.6
2 3 Petro 24.6 28.0
3 4 Petro 28.0 26.4
4 5 Petro 26.4 NaN
5 1 Mykola 35.0 24.0
6 2 Mykola 24.0 35.0
7 3 Mykola 35.0 22.0
8 4 Mykola 22.0 27.0
9 5 Mykola 27.0 NaN
10 1 Mykyta 30.0 30.0
11 2 Mykyta 30.0 34.0
12 3 Mykyta 34.0 30.0
13 4 Mykyta 30.0 23.0
14 5 Mykyta 23.0 NaN
看起来填充值在这里不起作用。我需要NaN填上一些数字,比如说4
或者,如果要讲述所有的故事,我需要像这样扩展最后一个值
Month Name Value ValueLag
0 1 Petro 25.0 2.5
1 2 Petro 2.5 24.6
2 3 Petro 24.6 28.0
3 4 Petro 28.0 26.4
4 5 Petro 26.4 26.4
5 1 Mykola 35.0 24.0
6 2 Mykola 24.0 35.0
7 3 Mykola 35.0 22.0
8 4 Mykola 22.0 27.0
9 5 Mykola 27.0 27.0
10 1 Mykyta 30.0 30.0
11 2 Mykyta 30.0 34.0
12 3 Mykyta 34.0 30.0
13 4 Mykyta 30.0 23.0
14 5 Mykyta 23.0 23.0
如果周期数为正数,是否有办法向前或向后填充最后一个值?填充值似乎是按组而不是单个值填充的。试试下面的方法
data['ValueLag'] = data.groupby('Name').Value.shift(-1).ffill()
提供的示例看起来像是
ffill
,而不是fillna(20)
@jezrael以及此处的add.ffill()