首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫数据帧-迭代并与前值进行比较

熊猫数据帧-迭代并与前值进行比较
EN

Stack Overflow用户
提问于 2020-07-21 17:17:28
回答 1查看 105关注 0票数 1
代码语言:javascript
复制
import pandas as pd

data = {'Unique_ID':  [44,66,12,76,57,83],
        'Location 1': ['AA', 'BB','CC','DD','EE','FF'],
        'Location 2': ['FF', 'CC','AA','EE','BB','CC'],
        'Rank':[1,2,3,4,5,6]
    }
pd.DataFrame (data)

下面是示例数据集,如下所示

预期输出:

它是根据等级进行排序的。我正在寻找一个最终的数据rank (Df2)与一个最佳的‘位置1’和'location2‘组合基于排名。示例:

  • Iteration-1:,因为这是最好的,所以没有什么可比较的,所以我们立即在新的dataframe (Df2)中插入第一条记录。

  • Iteration-2:比较Location1和Location2,如果在lcoation1和location2的新的dataframe(d2)中存在这样的情况,那么在这个示例中不要插入insert,我们需要将第2级记录插入为"BB“和"CC”。

  • Iteration-3:*检查新数据帧(D2)中是否存在"CC“或"AA”。如果一个或两个呈现,则不要将其更新为新的数据格式。在本例中,它们都退出了,因此不要将此记录更新为新的dataframe.

  • Iteration-4:检查新数据中是否存在DD或EE。我们在新的dataframe中看不到它们,因此将此记录更新为新的dataframe

并遍历每一条记录.

提前谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 17:56:20

使用:

代码语言:javascript
复制
m1 = df[['Location 1', 'Location 2']].stack().duplicated()
m2 = ~m1.any(level=0)
df = df[m2]

详细信息:

使用DataFrame.stack通过Location 1Location 2Multilevel系列重新定义数据,并使用Series.duplicated创建掩码m1

代码语言:javascript
复制
print(m1)
0  Location 1    False
   Location 2    False
1  Location 1    False
   Location 2    False
2  Location 1     True
   Location 2     True
3  Location 1    False
   Location 2    False
4  Location 1     True
   Location 2     True
5  Location 1     True
   Location 2     True
dtype: bool

在掩码Series.any上使用level=0上的m1并否定这一点,以创建一个新的布尔掩码m2。感谢@ScottBoston的建议。

代码语言:javascript
复制
print(m2)
0     True
1     True
2    False
3     True
4    False
5    False
dtype: bool

最后,使用此掩码m2过滤数据文件中的行:

代码语言:javascript
复制
print(df)
   Unique_ID Location 1 Location 2  Rank
0         44         AA         FF     1
1         66         BB         CC     2
3         76         DD         EE     4
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63019702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档