pandas select 行基于两个列值
pandas select rows based on two column values
我需要不同年份的同名值。如果一个名称值只存在一年,我需要减去它。
d = {
'Name':['A','B','B','C','D','D',
'E','E','E','F','G','G'],
'Year':[2010,2010,2012,2010,2011,2011,2010,2010,2012,2014,2015,2016]
}
df = pd.DataFrame(d,columns=['Name','Year'])
df
Name Year
0 A 2010
1 B 2010
2 B 2012
3 C 2010
4 D 2011
5 D 2011
6 E 2010
7 E 2010
8 E 2012
9 F 2014
10 G 2015
11 G 2016
预期的 df 应该看起来像
Name Year
1 B 2010
2 B 2012
7 E 2010
8 E 2012
10 G 2015
11 G 2016
试试这个:
df = df.drop_duplicates()
df = df[df['Name'].isin(df['Name'].value_counts()[df['Name'].value_counts()>=2].index)]
您可以使用 df.duplicated
和 keep=False
参数来观察数据框中的所有重复项:
df[df.duplicated(['Name'], keep=False)]
我需要不同年份的同名值。如果一个名称值只存在一年,我需要减去它。
d = {
'Name':['A','B','B','C','D','D',
'E','E','E','F','G','G'],
'Year':[2010,2010,2012,2010,2011,2011,2010,2010,2012,2014,2015,2016]
}
df = pd.DataFrame(d,columns=['Name','Year'])
df
Name Year
0 A 2010
1 B 2010
2 B 2012
3 C 2010
4 D 2011
5 D 2011
6 E 2010
7 E 2010
8 E 2012
9 F 2014
10 G 2015
11 G 2016
预期的 df 应该看起来像
Name Year
1 B 2010
2 B 2012
7 E 2010
8 E 2012
10 G 2015
11 G 2016
试试这个:
df = df.drop_duplicates()
df = df[df['Name'].isin(df['Name'].value_counts()[df['Name'].value_counts()>=2].index)]
您可以使用 df.duplicated
和 keep=False
参数来观察数据框中的所有重复项:
df[df.duplicated(['Name'], keep=False)]