我有一个数据框,我想根据条件替换该列中的某些值。我的数据框看起来像这样
ID customer_name arrival_month leaving_month
1524 ABC 201508 201605
1185 XYZ 201701 201801
8456 IJK 201801 201902
我在这里尝试一个简单的操作。我想通过currentmonth value = 201802更改leaving_month列中的值,其中leaving_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
有人可以指出我正确的方向或弄清楚我做错了什么或建议更好的解决方案?这是一个非常简单的问题,但不知怎的,我没有通过。
答案 0 :(得分:1)
您正在替换整行。而是使用.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 docs中阅读有关DataFrame索引的信息。