在pandas列中搜索一个值

  • Post category:Python

在Pandas中,可以使用.loc函数和布尔索引搜索一个值出现在哪些列中。

首先,使用.loc函数选定要搜索的列。例如,一个DataFrame有以下数据:

import pandas as pd

# 创建DataFrame
data = {
    '姓名': ['小明', '小红', '小刚', '小强'],
    '性别': ['男', '女', '男', '男'],
    '年龄': [24, 22, 25, 23],
    '城市': ['北京', '上海', '广州', '深圳']
}
df = pd.DataFrame(data)

若要搜索“小红”在哪些姓名列中出现,可以使用以下代码:

# 找到所有包含“小红”的行
search_name = '小红'
row = df.loc[df['姓名']==search_name]

这将返回一个包含所有包含“小红”的行的DataFrame对象。但是如果只需要知道“小红”在哪些列中出现,可以使用以下代码:

# 提取只包含一个“小红”的子DataFrame
row_single = row.drop_duplicates()

# 找到该子DataFrame的第一行(唯一一行)
index = row_single.index[0]

# 使用iloc函数提取该行的数据,得到一个Series对象
row_series = df.iloc[index,:]

# 使用tolist()函数将Series转换为列表对象
columns_with_search_name = row_series.tolist()

现在,columns_with_search_name就是一个列表,包含所有包含查询值“小红”的列名。以上就是一个完整的搜索一个值在Pandas列中的攻略。