Python - SettingWithCopyWarning - 使用 for 循环创建列

Python - SettingWithCopyWarning - Create a column using for loop

基于 'column_name' 中的文本,我想在新列中创建一行,returns 与 'column_name' 中找到的文本关联的字符串。这是代码:

temp_2 = []
for index,row in df2.iterrows():
    if 'abc' in row['column_name']:
        temp_2.append('A')      
    elif 'def'in row['column_name']:
        temp_2.append('B')
    elif 'ghk'in row['column_name']:
        temp_2.append('C')
    else:
        temp_2.append('Other')   
df2['Temp_2'] = temp_2
df2

Python returns:

/tmp/ipykernel_33624/2126258456.py:20: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
df2['Temp_2'] = temp_2

如何修改代码以消除警告?

删除警告:-)

import warnings
warnings.filterwarnings("ignore")

为了更简洁的代码,您可以试试这个:-)

df['Temp_2']='Other'
df['Temp_2'][df.column_name.str.contains('abc')]='A'
df['Temp_2'][df.column_name.str.contains('def')]='B'
df['Temp_2'][df.column_name.str.contains('ghk')]='C'
df