如何从特定行获取数据?

How to get data from specific row?

我还是 python 的新手,我需要帮助。

我有几个 csv 文件。其中一个看起来像这样:

test.csv

Name,Colour,ID
Fiona,Brown,23
Alex,Brown,24
Mary,Pink,25
Jane,Yellow,26
John,Pink,27
Emma,Yellow,28

另一个文件如下所示:

test2.csv

Name,Colour,ID
Gwen,Black,29
Peter,Brown,30
Stranger,Black,31
Abou,Yellow,32
Jonah,Yello,33
Kim,Yellow,34

我正在尝试检查文件中是否存在某种颜色并提取其行。

这是我试过的。

import pandas as pd

#User input file name
filename = input("Enter file name: ")


#Open and read CSV file
file = pd.read_csv(filename + ".csv")

#Check if black exist or not
if 'Black' in file:
    bl = file.loc["Black"]
    print("Yes")
else:
    print("No Black")


if 'Brown' in file:
    Brown = file.loc["Brown"]
    print(Brown)
else:
    print("No brown")


if 'Pink' in file:
    Pink = file.loc["Pink"]
    print(Pink)
else:
    print("No Pink")


if 'Yellow' in file:
    Yellow = file.loc["Yellow"]
    print(Yellow)
else:
    print("No Yellow")

这是我 运行 我的代码

时得到的输出
Enter file name: test
No Black
No brown
No Pink
No Yellow

有什么建议可以让我正确地得到输出吗?

file 是一个数据框。如果你这样做 if 'Black' in file 它只会搜索列名(['Name', 'Colour', 'ID'])。

您需要更具体地说明要搜索的位置(即要搜索的列)。

要在颜色列中查找 'black',请使用:

if 'black' in file['Colour'].values:
    bl = file.loc[file['Colour'] == "Black"]
    print("Yes")

如果要使用 in 语句,必须将此列(系列)转换为列表:

COLORS = ['Black', 'Brown', 'Pink', 'Yellow']

filename = input('Enter file name: ')
df = pd.read_csv(f'{filename}.csv')


colors = df['Colour'].tolist()

for color in COLORS:
    print(f'{color}' if color in colors else f'no {color}')

输出:

Enter file name: test
no Black
Brown
Pink
Yellow