我创建了一个应用 groupby
函数和 value_counts()
的 pandas series
。我想选择具有多个值的行。
Input:
Name Value
A 201
B 219
B 219
C 704
D 222
D 219
ex = ex.groupby("Value")
ex = ex["Name"].value_counts()
Output:
Value Name
201 A 3
219 B 2
D 1
704 C 1
222 D 1
我想选择 value
219
有多个 Name
B
和 D
.
最佳答案
我认为需要DataFrame.duplicated
按两列:
df = df[df.duplicated(['Name','Value'], keep=False)]
print (df)
Name Value
1 B 219
2 B 219
但是如果需要统计值的输出按级别Value
过滤:
s = df.groupby("Value")["Name"].value_counts()
print (s)
df1 = s[s.index.get_level_values('Value').duplicated(keep=False)].reset_index(name='count')
print (df1)
Value Name count
0 219 B 2
1 219 D 1
另一种解决方案是通过 reset_index
创建 DataFrame
第一:
df2 = df.groupby("Value")["Name"].value_counts().reset_index(name='count')
print (df2)
Value Name count
0 201 A 1
1 219 B 2
2 219 D 1
3 222 D 1
4 704 C 1
df1 = df2[df2['Value'].duplicated(keep=False)]
print (df1)
Value Name count
1 219 B 2
2 219 D 1
关于python - 如何在 Pandas 系列中选择包含多个值的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059862/