gpt4 book ai didi

python - Pandas 数据帧 "all true"标准

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:37 26 4
gpt4 key购买 nike

Python 2.7,Pandas 0.18。

我有一个 DataFrame,并且有通过标准参数选择行子集的方法。我想知道一种更惯用的方法来编写匹配所有行的标准。

这是一个非常简单的示例:

import pandas as pd

def apply_to_matching(df,criterion):
df.loc[criterion,'A'] = df[criterion]['A']*df[criterion]['B']

df = pd.DataFrame({'A':[1,2,3,4],'B':[10,100,1000,10000]})

criterion = (df['A']<3)
result = apply_to_matching(df,criterion)
print df

输出将是:

     A      B
0 10 10
1 200 100
2 3 1000
3 4 10000

因为该标准仅适用于前两行。

我想知道创建选择 DataFrame 的所有行的标准的惯用方法。

这可以通过向 DataFrame 添加一列所有真实值来完成:

# Add a column
df['AllTrue']=True
criterion = df['AllTrue']
result = apply_to_matching(df,criterion)
print df.drop('AllTrue',axis=1)

输出为:

       A      B
0 10 10
1 200 100
2 3000 1000
3 40000 10000

但是这种方法会在我的 DataFrame 中添加一列,我必须稍后将其过滤掉,以免它出现在我的输出中。

那么,在 Pandas 中是否有更惯用的方法来做到这一点?不需要我知道有关列名的任何信息,并且不更改 DataFrame?

最佳答案

当一切都应该为True时, bool 索引方式将需要一系列True。对于上面的代码,另一种看待它的方法是 Criterion 参数也可以接收切片。获取所有行意味着像 df.loc[:, 'A'] 那样对整个行进行切片。由于您需要将其作为参数传递给 apply_to_matching 函数,请使用 slice 内置函数:

apply_to_matching(df, slice(None, None))

关于python - Pandas 数据帧 "all true"标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40292466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com