Python 数据帧中行的选择
我有一个数据框架saydf,其中的列是state、city和pincode 我可以为这样一个州的特定城市选择所有行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'] =
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