![](/img/trans.png)
[英]Create new column in dataframe based on conditions in existing columns
[英]Create a column in dataframe based on existing columns and conditions (Dealing with Warning)
我正在處理以下任務:
“在 dataframe 中創建一個新列。如果另一列的值與固定字符串匹配,則新列采用 column_a 的值,對於任何其他情況,新列采用 column_b 的值”
為此,我正在使用這段代碼:
df['new_column'] = np.where(df['colum_2_check'] == 'FIXED_STRING', df['column_a'], df['column_b'])
執行時收到此警告:
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
在切片的副本上書寫是一種不好的做法嗎? 有沒有辦法改進建議的解決方案?
import pandas as pd
df = pd.DataFrame(
[['FIXED_STRING', 1, 2], ['something_else', 3, 4]],
columns=['colum_2_check', 'column_a', 'column_b']
)
idx = df['colum_2_check'] == 'FIXED_STRING'
df.loc[idx, 'new_column'] = df['column_a']
df.loc[~idx, 'new_column'] = df['column_b']
print(df)
印刷
指數 | column_2_check | column_a | column_b | 新列 |
---|---|---|---|---|
0 | FIXED_STRING | 1 | 2 | 1.0 |
1 | 別的東西 | 3 | 4 | 4.0 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.