由于行重复,请更改列中的值



我的数据帧(为了说明起见,对其进行了简化(的形式为:

|  id  | duplicate_id | Country | action_code | keep
|------|--------------|---------|-------------|-----
|  1   |              |  Norway |   1.1       |  y
|  2   |              |  Norway |   1.1       |  y
|  3   |              |  Norway |   1.2       |  y
|  4   |              | Iceland |   2.0       |  y
|  5   |              | Iceland |   2.0       |  y
|  6   |              | Iceland |   2.0       |  y

我不想删除重复的行,而是想几乎保留原始数据帧,而是用与唯一行的id(即第一列的id(相同的条目填充非唯一行的列"重复id"。此外,对于那些非唯一的行,列"action_code"将更改为"12","keep"将改为"n"。最后的表格预计为:

|  id  | duplicate_id | Country | action_code | keep 
|------|--------------|---------|-------------|-----
|  1   |              |  Norway |   1.1       |  y
|  2   |     1        |  Norway |   12        |  n
|  3   |              |  Norway |   1.2       |  y
|  4   |              | Iceland |   2.0       |  y
|  5   |     4        | Iceland |   12        |  n
|  6   |     4        | Iceland |   12        |  n

这可以使用numpy中的"where"方法来完成吗?或者有更直接的方法吗?

一个带有自定义汇总功能的groupby可以很好地完成任务:

def summarize(group):
# Everything inside the `group` dataframe is
# a duplicate of its first row
cond = group.index != group.index[0]
group.loc[cond, 'duplicate_id'] = group.iloc[0]['id']
group.loc[cond, 'action_code'] = '12'
group.loc[cond, 'keep'] = 'n'
return group
df.groupby(['Country', 'action_code']).apply(summarize)

相关内容

  • 没有找到相关文章

最新更新