运算符模块和 pandas
operator module and pandas
我想让用户输入运算符。是否可以将运算符模块用于 pandas 数据帧中的 select 值?
我试过以下方法:
import pandas as pd
import operator
In [7]: df=pd.DataFrame(ab,columns=['numbers','letters'])
In [8]: print(df)
numbers letters
0 10 a
1 5 b
2 8 c
3 11 d
4 15 e
我试过这个来获取所有值 <10:
df1=operator.lt(df[df['numbers'],10])
但我收到以下错误消息:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我是 pandas 的新手,想知道我是否只是遗漏了一些明显的东西。
你需要在算子调用后做DataFrame索引:
df1=df[operator.lt(df['numbers'],10)]
因为operator.lt
returns一个boolean Series, which can be used by df[...]
as index. It's called boolean array indexing.
但是,如果您实际上不需要运算符模块,您可以这样写:
df[df['numbers'] < 10]
我想让用户输入运算符。是否可以将运算符模块用于 pandas 数据帧中的 select 值? 我试过以下方法:
import pandas as pd
import operator
In [7]: df=pd.DataFrame(ab,columns=['numbers','letters'])
In [8]: print(df)
numbers letters
0 10 a
1 5 b
2 8 c
3 11 d
4 15 e
我试过这个来获取所有值 <10:
df1=operator.lt(df[df['numbers'],10])
但我收到以下错误消息:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我是 pandas 的新手,想知道我是否只是遗漏了一些明显的东西。
你需要在算子调用后做DataFrame索引:
df1=df[operator.lt(df['numbers'],10)]
因为operator.lt
returns一个boolean Series, which can be used by df[...]
as index. It's called boolean array indexing.
但是,如果您实际上不需要运算符模块,您可以这样写:
df[df['numbers'] < 10]