gpt4 book ai didi

pandas - Pandas 中的自定义 bool 过滤?

转载 作者:行者123 更新时间:2023-12-01 09:48:22 25 4
gpt4 key购买 nike

我有一个数据框

                  0         1         2         3       Marketcap
0 1.707280 0.666952 0.638515 -0.061126 2.291747 1.71B
1 -1.017134 1.353627 0.618433 0.008279 0.148128 1.82B
2 -0.774057 -0.165566 -0.083345 0.741598 -0.139851 1.1M
3 -0.630724 0.250737 1.308556 -1.040799 1.064456 30.92M
4 2.029370 0.899612 0.261146 1.474148 -1.663970 476.74k
5 2.029370 0.899612 0.261146 1.474148 -1.663970 -1

是否有某种自定义过滤方法,可以让 Python 知道 B > M > K?

假设我要过滤,df[df.Marketcap > 35.00M],有没有聪明或干净的方法来做到这一点?使用 M 或 B 使值非常可读且易于区分。

谢谢。

编辑:重新打开线程作为 Max U 的回答,而 excellent 似乎产生了一个 pandas 错误,我们在 Github 上打开了一个问题。

最佳答案

这不是很干净,但它可以解决问题并且不使用任何 python 迭代:

代码:

# Create a separate column (which you can omit later) that converts 'Marketcap' strings to numbers
df['cap'] = df.loc[df['Marketcap'].str.contains('B'), 'Marketcap'].str.replace('B','').astype(float) * 1000
df['cap'].fillna(df.loc[df['Marketcap'].str.contains('M'), 'Marketcap'].str.replace('M',''), inplace = True)

# For pandas pre-0.20.0 (<May 2017)
print df.ix[df['cap'].astype(float) > 35, :-1]

# For pandas 0.20.0+ (.ix[] deprecated)
print df.iloc[df[df['cap'].astype(float) > 35].index, :-1]

# Or, alternate pandas 0.20.0+ option (thanks @Psidom)
print df[df['cap'].astype(float) > 35].iloc[:,:-1]

输出:

          0         1         2         3         4 Marketcap
0 1.707280 0.666952 0.638515 -0.061126 2.291747 1.71B
1 -1.017134 1.353627 0.618433 0.008279 0.148128 1.82B
4 2.029370 0.899612 0.261146 1.474148 -1.663970 100.9M

关于pandas - Pandas 中的自定义 bool 过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838557/

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