Pandas:使用一系列字符串从数据框中选择行

问题描述 投票:0回答:1

我有一个系列中的姓氏列表:

print(s)

Order
1       Surname01
2       Surname02
3       Surname03
4       Surname04
5       Surname05
          ...    
496     Surname06
497     Surname07
498     Surname08
499     Surname09
500     Surname10

我在数据框df中具有列表的名称,地址,电话号码等:

           Unnamed: 0  Unnamed: 0.1  ...           Phone      Unnamed: 7
Last Name                            ...                                
Surname01           0           NaN  ...             NaN             NaN
Surname02           1           NaN  ...             NaN             NaN
Surname11           2           NaN  ...             NaN             NaN
Surname12           3           NaN  ...  (123) 456-7890  (123) 456-7890
Surname05           4           NaN  ...  (123) 456-7890  (123) 456-7890
...               ...           ...  ...             ...             ...
Surname13          94           NaN  ...  (123) 456-7890  (123) 456-7890
Surname14          95           NaN  ...  (123) 456-7890  (123) 456-7890
Surname15          96           NaN  ...             NaN             NaN
Surname16          97           NaN  ...             NaN             NaN
Surname17          98           NaN  ...             NaN             NaN

我想从df创建一个新表,其中仅包含s中的姓氏。我已经读了很多页,但无法弄清楚。这是我的位置:

df = df.loc[s]

但是我得到KeyError:'姓氏'

python string pandas dataframe series
1个回答
0
投票

尝试df.loc[df.index.isin(s), :]

示例

s = pd.Series(['a', 'b', 'c', 'd'])

df = pd.DataFrame(index=['a', 'f', 'd'], 
                  data={'col1': [10, 11, 12], 'col2': [1, 2, 3]})

df.loc[df.index.isin(s), :]

   col1  col2
a    10     1
d    12     3

0
投票

另一种方法。在列表中放入系列

l=s.SurNames.values.tolist()#Assummed your series has column Name SurNames

将元素添加到用|分隔的列表中]

k="|".join(l)

使用字符串搜索包含

df.loc[df.Last.str.contains(k),:]
© www.soinside.com 2019 - 2024. All rights reserved.