【发布时间】:2019-12-19 11:33:09
【问题描述】:
This post 对获得我想做的事情的基础非常有帮助,但是,我不知道如何到达终点线。
我有大型数据框(大约 10k 行),前几行看起来像我将称之为 df_a 的内容:
zone | value
0 | 12
1 | 12
2 99
3 12
0 12
1 12
2 12
3 99
但是,我希望根据区域的条件在“值”中删除连续重复项。例如,在上面的 sn-p 中,我希望在 zone = 1 时删除第二个“12”。所以我最终得到:
zone | value
0 | 12
1 | 12
2 99
3 12
2 12
3 99
我最初的想法是在区域列表中使用循环,根据区域名称自动为每个创建的区域创建新变量,然后运行我的 drop 重复代码(基于 this answer。但是,这并不工作:
data_category_range = df_a['zone'].unique()
data_category_range = data_category_range.tolist()
for i,value in enumerate(data_category_range):
data_category_range['zone_{}'.format(i)] = df_a[df_a['zone'] == value]
# de-duplicate
cols = ["zone","value"]
de_dup = df_a[cols].loc[(df_a[cols].shift() != df_a[cols]).any(axis=1)]
(这个循环在另一个循环中,它将遍历具有不同“区域”值的数据帧,因此变量需要是动态的 - 对替代方案开放,因为我理解这不是最佳实践)。
谢谢!
【问题讨论】:
标签: python-3.x pandas loops