Python 数据帧中行的选择

Python 数据帧中行的选择,python,pandas,Python,Pandas,我有一个数据框架saydf,其中的列是state、city和pincode 我可以为这样一个州的特定城市选择所有行 requiredState = 'ABC' requiredCity = 'XYZ' newDf = df[ (df['city']== requiredCity) & (df['state']==requiredState) ] 现在我想为一个州的所有城市选择所有行 因此,这可以通过简单地消除城市条件来实现,如: newDf = df[ (df['state'] =

我有一个数据框架saydf,其中的列是state、city和pincode

我可以为这样一个州的特定城市选择所有行

requiredState = 'ABC'
requiredCity  = 'XYZ'

newDf = df[ (df['city']== requiredCity) & (df['state']==requiredState) ]
现在我想为一个州的所有城市选择所有行

因此,这可以通过简单地消除城市条件来实现,如:

newDf = df[ (df['state'] == requiredState) ]
这将给我一个州的所有城市

我的问题是,有什么方法可以 我不需要删除城市条件,它将导致一个州的所有城市

i、 例如

requiredCity = ALL
nDf = df[ (df['city']== requiredCity) & (df['state']==requiredState) ]
或者我们可以通过一份所需城市的清单而不是全部

i、 e

我认为您需要但requiredCity必须在列表中,因此可以添加与|或原始条件链接的新条件:

df = pd.DataFrame({'city':list('abcdef'),
                   'pincode':[4,5,4,5,5,4],
                   'state':list('aaabbb')})

print (df)
  city  pincode state
0    a        4     a
1    b        5     a
2    c        4     a
3    d        5     b
4    e        5     b
5    f        4     b


requiredState = 'a'
requiredCity = ['ALL']

m1 = ('ALL' in requiredCity) | (df['city'].isin(requiredCity))
m2 = (df['state']==requiredState)
newDf = df[m1 & m2]
print (newDf)
  city  pincode state
0    a        4     a
1    b        5     a
2    c        4     a

非常感谢你的编辑。欢迎你,耶斯雷尔。保持知识共享。
 requiredCity = ['city1', 'city2']
 df[(df['city'].apply(lambda x : x in requiredCity)) & (df['state'] == requiredState)]
df = pd.DataFrame({'city':list('abcdef'),
                   'pincode':[4,5,4,5,5,4],
                   'state':list('aaabbb')})

print (df)
  city  pincode state
0    a        4     a
1    b        5     a
2    c        4     a
3    d        5     b
4    e        5     b
5    f        4     b


requiredState = 'a'
requiredCity = ['ALL']

m1 = ('ALL' in requiredCity) | (df['city'].isin(requiredCity))
m2 = (df['state']==requiredState)
newDf = df[m1 & m2]
print (newDf)
  city  pincode state
0    a        4     a
1    b        5     a
2    c        4     a
requiredState = 'a'
requiredCity = ['a','c']

m1 = ('ALL' in requiredCity) | (df['city'].isin(requiredCity))
m2 = (df['state']==requiredState)
newDf = df[m1 & m2]
print (newDf)
  city  pincode state
0    a        4     a
2    c        4     a
requiredState = 'a'
requiredCity = ['a']

m1 = ('ALL' in requiredCity) | (df['city'].isin(requiredCity))
m2 = (df['state']==requiredState)
newDf = df[m1 & m2]
print (newDf)
  city  pincode state
0    a        4     a