Pandas:根据另一个列值查询列值

时间:2018-04-18 16:49:04

标签: python pandas

给出一个Python字符串列表和一个Pandas DataFrame,例如列X,Y,Z。我需要在列Y == mylist[index]的数据框中依次查询列X的值。我试过以下无济于事:

filelist = glob.glob('/somedir/*.txt')

for f in filelist:
    f = os.path.basename(f)
    df.loc[df['Y'] == f, 'X'].item()

1 个答案:

答案 0 :(得分:1)

要获得某个列表中df.X的值的df.Y,您可以使用pandas.Series.isin()

df[df['Y'].isin([os.path.basename(f) for f in filelist])]['X']

要遍历结果,您可以使用pandas.Series.values

for x in df[df['Y'].isin([os.path.basename(f) for f in filelist])]['X'].values:
    print x

或者,根据您要对结果执行的操作,您可以使用.apply()

df[df['Y'].isin([os.path.basename(f) for f in filelist])]['X'].apply(some_function)