首页 > 解决方案 > 使用 .iloc 和 .isin 根据 Python 中第二行(不是第一行)的值过滤列

问题描述

我正在尝试过滤掉没有特定字符串的列作为第二行值。在这种情况下,假设我只想Apple显示其中的Kiwi列,而不显示列。

如果字符串值位于第一行,则它没有问题,但是,它在第​​二行中根本不起作用。我知道下面加粗的第四行代码需要更改,但我被卡住了。有任何想法吗?

import pandas as pd

file = 'K:\blah blah\blah\\sampledata.xlsx'

inp = pd.read_excel(file, header=1)

result = inp.iloc[:, inp.columns.isin(['Apple'])]

标签: pythonpandas

解决方案


您可以阅读全文并从列中DataFrame删除:Kiwi

df = pd.DataFrame({"Apple": [1, 2, 3], "Kiwi": [4, 5, 6]})
df.drop(columns="Kiwi")

否则,您可以在传递给的函数中指定不需要的列usecols

pd.read_excel(file, usecols=lambda col: "Kiwi" not in col)

这种方法应该更快https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html


推荐阅读