在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列中的攻略。