在dataframe实现类似SQL的where过滤
# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':1}, {'col1':'b', 'col2':2}, {'col1':'c', 'col2':3}])
# 单条件
print df.loc[df['col1'] == 'a']
print df.loc[df['col1'] != 'a']
print df.loc[df['col2'] > 2]
print df.loc[df['col1'].isin(['a', 'b'])]
# 多条件
print df.loc[df['col1'] == 'c'].loc[df['col2'] > 1]
输出结果:
col1 col2
0 a 1
col1 col2
1 b 2
2 c 3
col1 col2
2 c 3
col1 col2
0 a 1
1 b 2
col1 col2
2 c 3
dataframe空值过滤
import pandas as pd
df1 = pd.DataFrame([{'col1':'a', 'col2':1}, {'col1':'b', 'col2':2}])
df2 = pd.DataFrame([{'col1':'a', 'col3':11}, {'col1':'c', 'col3':33}])
data = pd.merge(left=df1, right=df2, how='left', left_on='col1', right_on='col1')
print data
print data.loc[data['col3'].isnull()]
print data.loc[data['col3'].notnull()]
输出结果:
col1 col2 col3
0 a 1 11
1 b 2 NaN
col1 col2 col3
1 b 2 NaN
col1 col2 col3
0 a 1 11