假设我有以下大熊猫数据帧,DF1,在从Excel文件一个jupyter笔记本:标记重复
Name ID Password
A User_1 PW_1
A User_2 PW_2
A User_3 PW_3
B User_4 PW_4
B User_5 PW_5
C User_6 PW_6
我希望添加新的列,叫做STAT
,即穿过Name
柱,以及在Name
每一个项目中,如果Name
以前的单元格包含相同的项目,打印dup
(重复)的STAT
;否则,不要放任何东西。在我的例子的上方,用户2,3和5应我的操作之后具有在SRC
柱dup
。
这是我的尝试。我添加使用df1.insert
称为STAT
一个新的空白列,然后我运行:
for index, name in enumerate(df1['Name']):
if index > 0:
if df1['Name'][index - 1] == name:
df1.ix[index, 'STAT'] = 'dup'`
这工作得很好,但我想知道
一),如果它可以提高
和更重要的是
乙)为什么它抛出一个A value is trying to be set on a copy of a slice from a DataFrame
警告尽管使用.IX我。即使.loc也会抛出警告。
这将是很容易检查一般,但我使用jupyter笔记本PyCharm,每次我重新加载该文件时,我得到的代码_xrsf argument missing from POST.
相关片段,应用到我的实际例子。 DF名称将有所不同:
sort_full = full_set.sort_values(['Name','SRC'])
dupless_full = sort_full.drop_duplicates(subset = ['Name', 'ER', 'ID',
'PW'], keep = 'last')
dupless_full.reset_index(drop = True, inplace = True)
dupless_full['STAT'] = np.where(dupless_full['Name'] ==
dupless_full['Name'].shift(), 'dup', "")
在'Name'列值排序? – jezrael
是的。事实上,他们被称为SRC的另一列按照名称排序后取值A或B。我选择不包含这些信息。 –