簡體   English   中英

如何在熊貓數據框中為切片分配值

[英]How to assign values to a slice in a pandas data frame

我必須根據狀態重新分配特定行的列值。 我正在使用的數據框只有兩列,即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個“是”值,但我得到的只是“否”值(該列的默認值)。 我不清楚為什么會這樣。

由於種種原因,我建議不要重復索引。 這種情況是一種,因為您很難更新行。 這就是我要做的:

# 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM