如何在Pandas中相加两列且不触发SettingWithCopyWarning警告
解决Pandas两列相加触发SettingWithCopyWarning的问题
这个警告的核心原因是你的merged_df其实是另一个DataFrame的切片视图/副本,并非独立的原始DataFrame对象,直接用.loc赋值时就会触发警告。给你几个可行的解决方法:
从根源避免副本:创建merged_df时生成独立副本
如果merged_df是从其他DataFrame切片得到的(比如merged_df = some_df[['col1','col2']]),改成在切片时就添加.copy():merged_df = some_df[['airline_name', 'airline_icao_unique_code']].copy()之后再执行你的赋值操作,就不会触发警告了。
用assign方法生成新列(推荐)
assign方法会返回一个新的DataFrame,完全避开在副本上修改的问题,代码写法:merged_df = merged_df.assign( airline_name=lambda df: df['airline_name'] + df['airline_icao_unique_code'] )直接操作原始DataFrame(如果允许)
如果你的需求允许直接修改原始的大DataFrame,跳过创建merged_df这一步,直接在原始DataFrame上用.loc赋值:original_df.loc[:, 'airline_name'] = original_df['airline_name'] + original_df['airline_icao_unique_code']
之前你用.copy()没解决问题,大概率是因为你是在触发警告的赋值操作之后才执行copy,而非在创建merged_df时就生成独立副本——这时候已经晚了,因为警告是在给副本赋值时触发的。
内容的提问来源于stack exchange,提问作者rylan
相关产品推荐
相关产品推荐

