2016-11-21 40 views
0

我完全不熟悉Python(和熊貓)。我真的想解決這個問題,但是,我不能沒有得到以下警告解決它:如何使用基於兩個現有列的熊貓正確添加新列?

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 

我有一個包含名字姓氏的人兩列。我正在尋找的是一種方法,添加一個新的列到我的數據框df包含全名。這下面的代碼曾與警告:

df['Full Name'] = df['First Name'] + " " + df['Last Name'] 

接下來,我想

df.loc[:,'Full Name'] = df.loc[:,['First Name']] + " " + df.loc[:,['Last Name']], 

這是無效的。

+0

什麼是上面'DF [ '姓名'] = DF [ '名']代碼+ 「」 + DF [ '姓']'? – jezrael

+0

因爲'df ['Full Name'] = df ['First Name'] +「」+ df ['Last Name']'很好,顯然完美。 – jezrael

+0

@ jezrael。謝謝您的意見!確切地說,但我仍然收到警告,這在jupyter筆記本中並不好。 –

回答

0

首先,你可能想要做

df.loc[:,'Full Name'] = df.loc[:,'First Name'].astype(str) + " " + df.loc[:,'Last Name'].astype(str) 

df.loc[:,'Full Name'] = df.loc['First Name'].astype(str) + " " + df.loc['Last Name'].astype(str) 

(.astype(STR)可在烏爾情況太多了)

那麼,你仍然可能會收到警告的原因,你可以看到的消息(檢查這個答案Pandas still getting SettingWithCopyWarning even after using .loc

這裏的一個簡短的回答是寫

df.is_copy=False 
df.loc[:,'Full Name'] = df.loc[:,'First Name'].astype(str) + " " + df.loc[:,'Last Name'].astype(str)