Pandas中基于条件删除行问题:df.drop后数据框形状未改变
问题分析与解决办法
嘿,我之前也踩过这个一模一样的坑!执行df.drop(['Different_year'])后DataFrame形状没变化,主要有两个关键原因,咱们一个个掰扯清楚:
1. 没明确指定删除的是行还是列
df.drop()默认是按照行索引来删除数据的(参数axis=0)。如果你想删的'Different_year'是列名,那这个操作其实是在找索引等于'Different_year'的行——找不到对应的行,自然就不会有任何变化。
这时候你得明确告诉Pandas要删的是列,有两种直观的方式:
- 用
columns参数直接指定列名 - 设置
axis=1(代表操作列维度)
2. drop()默认不修改原DataFrame
Pandas的很多方法默认都是返回一个修改后的新副本,不会直接改动原数据。所以哪怕你指定对了要删的内容,要是没把结果重新赋值,或者没加inplace=True,原DataFrame还是会保持原样。
修正后的代码示例
如果是删除列:
# 方式1:推荐用columns参数,可读性拉满 df = df.drop(columns=['Different_year']) # 方式2:指定axis=1,同时赋值给原变量 df = df.drop(['Different_year'], axis=1) # 方式3:直接修改原DataFrame(注意:这种方式没法撤销,调试时谨慎用) df.drop(columns=['Different_year'], inplace=True)
如果是删除行(假设'Different_year'是行索引的值):
# 赋值给原变量,保留修改结果 df = df.drop(['Different_year']) # 或者直接修改原DataFrame df.drop(['Different_year'], inplace=True)
小提醒:优先用“赋值给原变量”的方式,比inplace=True更安全,万一改错了还能回溯~
内容的提问来源于stack exchange,提问作者vando
相关产品推荐
相关产品推荐

