python - 如何在特定条件下从 Pandas 数据框中选择行

标签 python pandas

假设数据框如下:

id   class  count
 0     A      2
 0     B      2
 0     C      2
 0     D      1
 1     A      3
 1     B      3
 1     E      2
 2     D      4
 2     F      2 

对于每个id,我想找到计数最大的类。如果多个类具有相同的计数,则将它们合并为一行。对于上面的例子,结果应该是这样的:

id     class    count
 0     A,B,C      2
 1     A,B        3
 2     D          4

如何在pandas中使用语句来实现这个功能?

最佳答案

解决方案 transformaggregate :

df = df[g['count'].transform('max').eq(df['count'])]
print (df)
   id class  count
0   0     A      2
1   0     B      2
2   0     C      2
4   1     A      3
5   1     B      3
7   2     D      4

df = df.groupby('id').agg({'class':','.join, 'count':'first'}).reset_index()
print (df)
   id  class  count
0   0  A,B,C      2
1   1    A,B      3
2   2      D      4

另一种具有自定义功能的解决方案:

def f(x):
    x = x[x['count'] == x['count'].max()]
    return (pd.Series([','.join(x['class'].values.tolist()), x['count'].iat[0]], 
                      index=['class','count']))

df = df.groupby('id').apply(f).reset_index()
print (df)
   id  class  count
0   0  A,B,C      2
1   1    A,B      3
2   2      D      4

关于python - 如何在特定条件下从 Pandas 数据框中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43489261/

相关文章:

python - 从多个字典创建数据框

python - 无论用户是谁,桌面上的 to_excel

Python pandas整数YYYYMMDD到日期时间

python - 如何在有限的环境中从 Python 中的大文件中删除行

python - Pandas :如何生成 "year-month"格式列(句点)?

python - 使用 nltk 改进人名的提取

python - 如何在图像中填充 "holes"?

python - 合并包含列表的数据框列

Python 从索引中删除一个字符串

python - 在Python中将数字文件读取到元组中?