当条件与数据框中的其他列匹配时,从一列中提取单元格

时间:2019-06-05 13:18:38

标签: python-3.x pandas

我有一个csv文件,我已将其加载到数据框中。

... SCity,DCity,CVtype,L1Name ....

我想为SCity,DCity和CVType的特定组合提取L1Name。

理想情况下,数据应以列表形式返回,以便我可以使用每个返回值从数据帧中提取其他信息,例如每个L1Name的成本(用于SCity,DCity和CVType的其他(不匹配)值)。

示例SCity为'Chennai',Dcity为'Pune',类型为'32 Ft'我应该得到L1Name的列表 f1 f2 f3

我不知道如何在多列上进行搜索

  

cimsBid [cimsBid ['CVtype'] =='32 FT']。groupby('L1Name')。nunique()

为我提供了所有L1名称的数据透视表。

  

cimsBid [cimsBid ['CVtype'] =='32 FT',cimsBid ['SCity'] =='Chennai']。groupby('L1Name')。nunique()

给我以下错误消息:

  

名称:SCity,长度:22001,dtype:bool)'是无效密钥

预期输出为:{'f1','f2'}

1 个答案:

答案 0 :(得分:1)

boolean indexing()一起使用,并通过&|链接条件:

#filter by & for bitwise AND
df = cimsBid[(cimsBid['CVtype']=='32 FT') & (cimsBid['SCity']=='Chennai')]

#filter by | for bitwise OR
#df = cimsBid[(cimsBid['CVtype']=='32 FT') | (cimsBid['SCity']=='Chennai')]

out = df.groupby('L1Name').nunique()