簡體   English   中英

有條件地替換數據框中的列值?

[英]Conditional replacing of column values in dataframe?

我有一個數據框,我想根據條件替換該列中的某些值。 我的數據框看起來像這樣

ID    customer_name   arrival_month    leaving_month
1524   ABC              201508           201605 
1185   XYZ              201701           201801
8456   IJK              201801           201902

我正在嘗試一個簡單的操作。 我想通過當月值= 201802更改Leave_month列中的值,其中Leave_month> 201802。 我已經嘗試過.loc,它給出了以下錯誤。

df.loc[(df['leaving_month'] > 201802)] = 201802
KeyError: 'leaving_month'

我也嘗試過np.where這也給一個錯誤。

df['leaving_month']=np.where(df['leaving_month']>currentmonth, currentmonth)
KeyError: 'leaving_month'

我也嘗試過蠻力循環

for o in range(len(df)):
            if(df.loc[o,'leaving_month']>currentmonth):
                df.loc[o,'leaving_month']=currentmonth
IndexingError: Too many indexers

有人可以指示我正確的方向,還是找出我做錯了什么,或提出更好的解決方案? 這是一個非常簡單的問題,但是我卻無法解決。

您要替換整行。 而是使用.loc設置特定的列。 請參閱下面的解決方案中的第二個索引器。

df.loc[df['leaving_month'] > 201802, 'leaving_month'] = 201802
df

回報

     ID customer_name  arrival_month  leaving_month
0  1524           ABC         201508         201605
1  1185           XYZ         201701         201801
2  8456           IJK         201801         201802

您可以在Pandas文檔中閱讀有關DataFrame索引的信息。

暫無
暫無

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

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