如何根据两个条件过滤 csv 文件中的特定行? (使用 pandas)

How do I filter specific rows in a csv file based on two conditions? (using pandas)

我的数据框基本上是这样的:(where df=pd.read_csv(csv_file_name))

    'Acid'  'Ion'  'File Name'    'Area'
0    'Cholic' '390'  'sth-E-1.raw'  '594'
1    'Cholic' '392'  'sth-E-2.raw'  '630'
2    'Cholic' '388'  'sth-E-3.raw'  '710'
3    'Cholic' '330'  'sth-E-1.raw'  '700'
4    'Cholic' '340'  'sth-E-2.raw'  '690'
5    '7alpha' '729'  'sth-E-1.raw'  '109'
6    '7alpha' '745'  'sth-E-1.raw'  '115

我只想打印名称包含 'Cholic' 且文件名 'E-1.raw' 包含

的行

到目前为止,我只想过这样打印语句:

print(df[(df['Acid'] == 'Cholic') & ('E-1.raw' in df['File Name']))

你需要 -

df[(df['Acid'] == 'Cholic') & (df['File Name'].str.contains('E-1.raw')]

输出

     Acid  Ion    File_Name  Area
0  Cholic  390  sth-E-1.raw   594
3  Cholic  330  sth-E-1.raw   700

说明

你的代码的问题就是在这种情况下 -

'E-1.raw' in df['File Name']

这个 returns 一个真值是否字符串 'E-1.raw' 出现在整个系列 df['File Name'] 中。它只会产生一个 True/False 值,这不是您想要的值。

您想逐行过滤掉 df['File Name'] 中的 each 字符串是否包含 'E-1.raw',您可以通过转换首先作为 str 系列,然后使用 contains 函数。