2016-11-21 46 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) 
相关问题