如何在熊猫数据框中为切片分配值

时间:2019-08-02 14:57:06

标签: python pandas

我必须根据状态重新分配特定行的列值。我正在使用的数据框只有两列,即SET VALUE和AMOUNT,其中STATE位于索引中。对于每个状态的AMOUNT列中值最高的3个客户,我需要将SET VALUE的值更改为“ YES”。我如何在熊猫框架中做到这一点?

我尝试对索引中的状态使用for循环,然后按AMOUNT列值进行排序,并在SET VALUE列的前三行中分配“ YES”。

for state in trial.index:
    trial[trial.index == state].sort_values('AMOUNT', ascending = False)['SET VALUE'].iloc[0:3] = 'YES'
    print(trial[trial.index == state])

我希望此循环的打印部分包括3个“是”值,但我得到的只是“否”值(该列的默认值)。我不清楚为什么会这样。

1 个答案:

答案 0 :(得分:0)

出于各种原因,我建议不要重复索引。这种情况是一种,因为您很难更新行。这就是我要做的:

# make STATE a column, and index continuous numbers
df = df.reset_index()

# get the actual indexes of the largest amounts
idx = df.groupby('STATE').AMOUNT.nlargest(3).index.get_level_values(1)

# update
df.loc[idx, 'SET_VALUE'] = 'YES'