相关疑难解决方法(0)

使用pd.eval()在pandas中进行动态表达式评估

目标和动机

pd.eval并且eval是pandas API套件中功能强大但被低估的功能,它们的使用远未完全记录或理解.小心适量,eval并且engine可以极大地简化代码,提高性能,并成为创建动态工作流的强大工具.

这个规范QnA的目的是让用户更好地理解这些功能,讨论一些鲜为人知的功能,如何使用它们,以及如何最好地使用它们,以及清晰易懂的示例.这篇文章将讨论的两个主要议题是

  1. 了解parser,df2x在争论pd.eval,以及它们如何被用来计算表达式
  2. 了解之间的差eval,eval并且engine,当每个功能是合适的用于动态执行.

这篇文章不能替代文档(答案中的链接),所以请完成它!


我将以这样的方式构建一个问题,以便开启对所支持的各种功能的讨论parser.

给出两个DataFrame

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1
   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2
   A  B  C …
Run Code Online (Sandbox Code Playgroud)

python eval dataframe pandas

45
推荐指数
2
解决办法
7156
查看次数

对于相同类型的项目,如何在列中保留具有最大值的行?

我有下表:

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     1      |   10   | 100   |
     1      |   50   |  50   |
     2      |   10   | 100   |
     2      |   90   |  10   |
     2      |   90   |  10   |
Run Code Online (Sandbox Code Playgroud)

我想要一个熊猫数据框操作只返回第一行和第五行。这对应于给定项目的 crit_A 为最大值的行。

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     2      |   90   |  10   |
Run Code Online (Sandbox Code Playgroud)

注意:当 crit_A 对给定项目有多个相等的值时,我只需要返回一个项目。

以下不是我要找的:

res_82_df.groupby(['Item number']).max()
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它会按项目编号分组但返回所有列的最大值。另请注意:我可以查找任意阈值并执行查询语句。但这种方法也不够稳健,因为我总是需要查看数据并做出价值判断。

我如何有效地完成这项工作?

注意:我的问题确实是上面链接的问题的重复。不过,这里的答案非常独特且简洁得多,并且按照我的要求执行。

python dataframe pandas

5
推荐指数
1
解决办法
2668
查看次数

Pandas groupby 和 agg 按条件

df.groupby(['Month']).agg({'Status' : ['count']})
Run Code Online (Sandbox Code Playgroud)

上面的行将数据框分组Month并计算Status每个月的数量。有没有办法只得到一个计数在哪里Status=X?类似于下面不正确的代码:

df.groupby(['Month']).agg({'Status' == 'X' : ['count']})
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我想多少计数StatusX每月。

python aggregate dataframe pandas

3
推荐指数
3
解决办法
4539
查看次数

标签 统计

dataframe ×3

pandas ×3

python ×3

aggregate ×1

eval ×1