我想在熊猫中创建一个新列,每列包含特定数据(第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(可能是一个很好的理由!)

08-24 16:58
查看更多