相关疑难解决方法(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
查看次数

Python相当于R中的which()

我试图采用以下R语句并使用NumPy将其转换为Python:

1 + apply(tmp,1,function(x) length(which(x[1:k] < x[k+1])))
Run Code Online (Sandbox Code Playgroud)

是否有Python等效于哪个()?这里,x是矩阵tmp中的行,k对应于另一个矩阵中的列数.

以前,我尝试了以下Python代码,并收到了值错误(操作数无法与形状一起广播):

for row in tmp:
        print np.where(tmp[tmp[:,range(k)] < tmp[:,k]])
Run Code Online (Sandbox Code Playgroud)

python r which indices

26
推荐指数
2
解决办法
2万
查看次数

大熊猫相当于R的哪个()

之前已经问过这个问题的变化,我仍然无法理解如何根据我想要设置的条件实际切片python系列/ pandas数据帧.

在R中,我要做的是:

df[which(df[,colnumber] > somenumberIchoose),]
Run Code Online (Sandbox Code Playgroud)

which()函数在数据框的列中查找大于somenumberIchoose的行的条目索引,并将其作为向量返回.然后,我使用这些行索引对数据帧进行切片,以指示我想在新表单中查看哪些数据帧行.

在python中有相同的方法吗?我已经看过枚举的引用,在阅读文档后我并不完全理解.我的示例为了获得行索引,现在看起来像这样:

indexfuture = [ x.index(), x in enumerate(df['colname']) if x > yesterday]  
Run Code Online (Sandbox Code Playgroud)

但是,我继续收到无效的语法错误.我可以通过循环遍历值,并自己手动进行搜索来破解解决方法,但这似乎非常非pythonic和低效.

枚举()究竟是做什么的?什么是在矢量中找到满足所需参数的值索引的pythonic方法?

注意:我正在使用Pandas作为数据帧

python logical-operators which pandas

15
推荐指数
2
解决办法
9941
查看次数

Pandas - 在 DataFrame 中的任何位置查找值的索引

我是 Python 和 Pandas 的新手。

我想security_id在我的 Pandas 数据框中找到某个值(假设)的索引,因为那是列开始的地方。(列上方有未知数量的行带有无关数据,左侧还有许多空“列”。)

据我所知,isin方法只返回一个关于值是否存在的布尔值,而不是它的索引。

我如何找到这个值的索引?

python pandas

11
推荐指数
2
解决办法
4万
查看次数

Pandas 根据条件获取行 ID

我有以下数据框:

Date          best    a    b    c    d
1990-01-01    a       5    4    7    2
1991-01-02    c       10   1    2    0
1992-01-03    d       2    1    4    12
1993-01-04    a       5    8    11   6
Run Code Online (Sandbox Code Playgroud)

我希望获得行 ID,其中df['Date' == '1992-01-03'].

预期回报是2.

有任何想法吗?

python pandas

3
推荐指数
1
解决办法
4万
查看次数

pythonic方式获取索引,列值为== 1

我目前有一个MxN数据框,其中包含优化问题的解决方案."有效"i,j代表{M}的j和{N}对中的j由1表示,"无效"对由0表示.我需要确定所有活动单元的i,j值,希望避免for循环索引或列.

这将是一个例子:

In [73]: sol_df
Out[73]:

    1    2    3   4   5
1   0    0    1   0   0
2   1    0    0   0   0
3   0    1    0   0   0
4   0    0    0   0   0 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要的是一对对(列表会做):

[(1,3), (2,1), (3,2)]
Run Code Online (Sandbox Code Playgroud)

有办法吗?

谢谢!

一个.

编辑:解释不清楚EDIT2:我的解释仍不清楚

python pandas

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

标签 统计

python ×6

pandas ×5

which ×2

dataframe ×1

eval ×1

indices ×1

logical-operators ×1

r ×1