如何解决Python数据框中的名称可以同时具有两个值
我有一个像这样的数据框
List<User> users
我想创建另一个数据框,其名称列表具有标志值“ Before”而不是“ After” 就像在集合中一样,它类似于A交集B补。
使用上面的df数据框,我在新数据框中将仅获得一个名称-Test1。
我正在为如何构建逻辑和使用什么功能而苦苦挣扎。 我应该使用循环遍历所有值还是基于标志值分离数据帧并执行设置操作?
只是在寻找可行的解决方案
解决方法
您只需要做两个过滤器即可;第一个过滤器检查flag
,然后第二个过滤器除去带有after标志的所有内容:
import pandas as pd
df = pd.DataFrame({'name': ['test1','test2','test3','test1','test2'],'flag':['before','before','after','after']})
df[~df.name.isin(df[df.flag=='after']['name'])]
name flag
0 test1 before
3 test1 before
,
这是.loc[]
的一种方法,可以在某些情况下防止SettingWithCopyWarning
警告(在这里可能不是问题)。
# Find the NAME such that FLAG == After:
after = df.loc[ df['FLAG'] == 'After','NAME' ]
# Filter rows (before comma in .loc[]) and select columns (after comma)
before = df.loc[~df['NAME'].isin(after),['NAME','DATE']]
print(before)
NAME DATE
0 Test1 1 April 2020
2 Test1 28 May 2020
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。