如何使用Python在excel文件的另一列中基于包含特定名称的id进行过滤



我有一个excel文件,包含如下所示的三列,

<表类> ID 名称 日期 tbody><<tr>1136GG Daubringen2019-04-081136Manheinm2020-06-161136Manheinm Streitkof2020-07-241136Staufenberg2020-08-151136Sturcken2021-03-051136Sturcken (FTTH)2021-09-131234Lerbeck2019-04-181234坏oyehausen2020-06-261234Werre公园2020-07-141234Werre公园(FTTH)2020-08-251234Werre公园(FTTH)2021-03-151234坏oyehausen2021-09-23

可以聚合GroupBy.firstGroupBy.last优先,Series.str.startswithSeries.str.endswith过滤指标:

df1 = df.groupby('ID')['Name'].agg(['first','last'])
i = df1.index[~df1['first'].str.startswith('(FTTH)') & ~df1['last'].str.endswith('(FTTH)')]
print (i)
#Int64Index([1234], dtype='int64', name='ID')

如果需要列表中的值:

L = i.tolist()
[1234]

需要DataFrame:

out = i.to_frame(index=False)
print (out)
ID
0  1234

如果需要first而不需要(FTTH),last而不需要(FTTH),请使用:

i = df1.index[~df1['first'].str.startswith('(FTTH)') & df1['last'].str.endswith('(FTTH)')]
s = ~df['Name'].str.endswith('(FTTH)')
s.groupby(df['ID']).agg(['first', 'last']).all(axis=1)[lambda x:x].reset_index()[['ID']]

输出:

ID
0   1234

最新更新