Python 基于dataframe中的多个列值选择行
我有一个Python 基于dataframe中的多个列值选择行,python,pandas,Python,Pandas,我有一个熊猫数据帧df: import pandas as pd data = {"Name": ["AAAA", "BBBB"], "C1": [25, 12], "C2": [2, 1], "C3": [1, 10]} df = pd.DataFrame(data) df.set_index("Name") 打印时看起来像这样(供参考): 我想选择C1、C2和C3的值介于0和20之间的行 您能推荐一种优雅的方式来选择这些行吗?我认为下面应
熊猫
数据帧
df
:
import pandas as pd
data = {"Name": ["AAAA", "BBBB"],
"C1": [25, 12],
"C2": [2, 1],
"C3": [1, 10]}
df = pd.DataFrame(data)
df.set_index("Name")
打印时看起来像这样(供参考):
我想选择C1
、C2
和C3
的值介于0
和20
之间的行
您能推荐一种优雅的方式来选择这些行吗?我认为下面应该这样做,但它的优雅程度有待讨论
new_df = old_df[((old_df['C1'] > 0) & (old_df['C1'] < 20)) & ((old_df['C2'] > 0) & (old_df['C2'] < 20)) & ((old_df['C3'] > 0) & (old_df['C3'] < 20))]
new_-df=old_-df[((old_-df['C1']>0)和(old_-df['C2']>0)和(old_-df['C2']<20))和((old_-df['C3']>0)和(old_-df['C3']<20))]
较短版本:
In [65]:
df[(df>=0)&(df<=20)].dropna()
Out[65]:
Name C1 C2 C3
1 BBBB 12 1 10
[65]中的
df[(df>=0)&(df我喜欢使用df.query()来处理这类事情
df.query('C1>=0 and C1<=20 and C2>=0 and C2<=20 and C3>=0 and C3<=20')
df.query('C1>=0,C1=0,C2=0,C3df.query(
“0
或
df.query(“0<@df<20”).dropna()
在df中使用@foo
。query
引用环境中的变量foo
df.query('C1>=0 and C1<=20 and C2>=0 and C2<=20 and C3>=0 and C3<=20')