簡體   English   中英

根據現有列和條件在dataframe中創建列(處理警告)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM