【发布时间】:2021-05-29 18:34:37
【问题描述】:
我正在尝试根据两列中的唯一值(均为 dtype = object)对大型数据框(5000+ 行和 15 列)进行子集化。我想排除行符合以下条件的数据:
名为“记录”的列等于“MO”AND名为“年份”的列等于“2017”或“2018”。
这是数据框的示例:
df = pd.DataFrame({'A': [1001,2002,3003,4004,5005,6006,7007,8008,9009], 'Record' : ['MO','MO','I','I','MO','I','MO','I','I'], 'Year':[2017,2019,2018,2020,2018,2018,2020,2019,2017]})
print(df)
A Record Year
0 1001 MO 2017
1 2002 MO 2019
2 3003 I 2018
3 4004 I 2020
4 5005 MO 2018
5 6006 I 2018
6 7007 MO 2020
7 8008 I 2019
8 9009 I 2017
我想要从数据框中取出both“MO”和“2017”以及both“MO”和“2018”的任何行。
删除右侧行(上面数据框中的 0 和 4)的示例:
df = pd.DataFrame({'A': [2002,3003,4004,6006,7007,8008,9009], 'Record' : ['MO','I','I','I','MO','I','I'], 'Year':[2019,2018,2020,2018,2020,2019,2017]})
print(df)
A Record Year
0 2002 MO 2019
1 3003 I 2018
2 4004 I 2020
3 6006 I 2018
4 7007 MO 2020
5 8008 I 2019
6 9009 I 2017
我试过下面的代码,但它不起作用(我一开始只尝试了一年):
df = df[(df['Record'] != "MO" & df['Year'] != "2017")]
【问题讨论】:
标签: sql python-3.x pandas dataframe subset