我想在熊猫中创建一个新列,每列包含特定数据(第X列)的每5行都会递增,如下所示
1
1
1
1
1
2
2
2
2
2
3
最佳答案
另外的选择:
df['new'] = df.index / 5
使用奇数python 2来划分索引。 (我敢肯定有一种方法可以在3中类似地完成它吗?)
编辑:
df['new'] = df.index / 5 + 1
可以为您提供1而不是0的值
python 3感谢BusyBee:
df['new']= (df.index / 5 + 1).astype(int)
如果要从第x行开始:
import pandas as pd
df = pd.DataFrame({'data': range(50)}, columns=['data'])
x = 23
df['two'] = None
df.loc[x:, 'two'] = df.index[x:] / 5 +1
print df
如果要从x开始,然后从1开始数字,则需要减去x
df.loc[x:, 'two'] = (df.index[x:] - x) / 5 +1
但我不确定这是否是最好的方法。
您可以在应用
.shift
后使用它,但是由于某些原因您不能移动df.index
(可能是一个很好的理由!)