我有一个系列和一个这样的列表
$ 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
如何使用B
和s
删除第filter_list
行的新系列?
我的意思是我想创建一个包含以下内容的系列new_s
$ print(new_s)
A 1
C 3
D 4
s.isin(filter_list)
不起作用。因为我要基于Series的索引而不是Series的值进行过滤。
答案 0 :(得分:1)
如果列表的所有值都存在于索引中,则使用Series.loc
:
new_s = s.loc[filter_list]
print (new_s)
A 1
C 3
D 4
dtype: int64
如果可能不存在,请使用Index.intersection
或isin
,例如@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()