熊猫过滤器系列清单

时间:2019-11-10 05:14:17

标签: python pandas

我有一个系列和一个这样的列表

$ import pandas as pd 

$ s = pd.Series(data=[1, 2, 3, 4], index=['A', 'B', 'C', 'D'])
$ filter_list = ['A', 'C', 'D']

$ print(s)

A    1
B    2
C    3
D    4

如何使用Bs删除第filter_list行的新系列?

我的意思是我想创建一个包含以下内容的系列new_s

$ print(new_s)

A    1
C    3
D    4

s.isin(filter_list)不起作用。因为我要基于Series的索引而不是Series的值进行过滤。

3 个答案:

答案 0 :(得分:1)

如果列表的所有值都存在于索引中,则使用Series.loc

new_s = s.loc[filter_list]
print (new_s)
A    1
C    3
D    4
dtype: int64

如果可能不存在,请使用Index.intersectionisin,例如@Yusuf Baktir解决方案:

filter_list = ['A', 'C', 'D', 'E']
new_s = s.loc[s.index.intersection(filter_list)]
print (new_s)
A    1
C    3
D    4
dtype: int64

numpy.in1d的另一种选择:

filter_list = ['A', 'C', 'D', 'E']
new_s = s[np.in1d(s.index, filter_list)]
print (new_s)
A    1
C    3
D    4
dtype: int64

答案 1 :(得分:0)

基本上,这些是索引值。因此,对索引进行过滤就可以了

Private Sub DatCUSTOMERS_RowColChange(LastRow As Variant, ByVal LastCol As Integer)

    Unload frmPaymentRecur

    lblID = rx.Fields("id")
    txtClientID = rx.Fields("clientCode")
    txtFirstName = rx.Fields("fname")
    txtLastName = rx.Fields("lname")
    txtMname = rx.Fields("mname")
    txtExtension = rx.Fields("extName")
    txtPin = rx.Fields("pinNo")
    txtDesignation = rx.Fields("designation")
    txtContactNo = rx.Fields("contactNo")
    txtAddress = rx.Fields("address")
    txtAge = rx.Fields("Age")
    txtSalary = rx.Fields("salary")
    cmbAssociation.Text = rx.Fields("fieldTypeTitle")
    cmbChoices.Text = rx.Fields("fieldNameTitle")
    cmdEdit.Enabled = True
    cmdAddLoan.Enabled = True
    cmdPayments.Enabled = True
    End Sub

答案 2 :(得分:0)

setText()