gpt4 book ai didi

python - 尴尬的 Pandas/Python Dataframe 索引的替代方案 : df_REPEATED[df_REPEATED ['var' ]]>0?

转载 作者:行者123 更新时间:2023-12-01 02:49:51 25 4
gpt4 key购买 nike

在 Pandas/Python 中,在调节其自身变量时,我必须将数据帧名称写入两次:

df_REPEATED[df_REPEATED['var']>0]

这种情况发生了很多次,看起来很不合理。 90-99% 的用户在 95% 的时间里会对以下内容感到满意:

df_REPEATED[['var']>0]

使用 .loc[] 时也需要此语法。写这个有什么替代方法或捷径吗?

另一方面,是否有一些我不理解的用例,而实际上我在 Python 方面的教育严重不足?

最佳答案

不是官方答案......但它最近已经让我的生活变得更简单:

https://github.com/toobaz/generic_utils/blob/master/generic_utils/pandas/where.py

您不需要下载整个存储库:保存文件并执行

from where import Where as W

应该足够了。然后你像这样使用它:

df = pd.DataFrame([[1, 2, True],
[3, 4, False],
[5, 7, True]],
index=range(3), columns=['a', 'b', 'c'])
# On specific column:
print(df.loc[W['a'] > 2])
print(df.loc[-W['a'] == W['b']])
print(df.loc[~W['c']])
# On entire DataFrame:
print(df.loc[W.sum(axis=1) > 3])
print(df.loc[W[['a', 'b']].diff(axis=1)['b'] > 1])

一个稍微不那么愚蠢的用法示例:

data = pd.read_csv('ugly_db.csv').loc[~(W == '$null$').any(axis=1)]

编辑: this answer提到了一种不需要外部组件的类似方法,结果是:

data = (pd.read_csv('ugly_db.csv')
.loc[lambda df : ~(df == '$null$').any(axis=1)])

另一种可能性是使用.apply(),如

data = (pd.read_csv('ugly_db.csv')
.pipe(lambda df : ~(df == '$null$').any(axis=1)))

关于python - 尴尬的 Pandas/Python Dataframe 索引的替代方案 : df_REPEATED[df_REPEATED ['var' ]]>0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44912692/

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