如何在python中使用非连续数字更改列值?

时间:2016-12-16 00:15:00

标签: python-3.x pandas numpy

我有一个数据框。我想改变列#34;标签"中的值。 值必须从1到7,但不能使用#4。每个人也必须有2个。

我设法做到了。但我的方法仅适用于小型数据帧。 那么如何才能让更大的数据帧自动化呢?

#Original dataframe
df = pd.DataFrame(np.random.rand(12, 5))
label=np.array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
df['label'] = label
df

#My attempt :)
df['label'] = [1, 1, 2, 2, 3, 3, 5, 5, 6, 6, 7, 7]
df

原始数据框

enter image description here

预期数据框(#4缺失!!!)

enter image description here

1 个答案:

答案 0 :(得分:3)

使用楼层划分并添加> = 4

label = np.arange(len(df)) // 2 + 1
df['label'] = label + (label >= 4)

df

enter image description here