python - 使用 .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'])]
解决方案
您可以阅读全文并从列中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
推荐阅读
- java - 使用 ObjectOutputStream 将 ArrayList 写入文件时如何保留换行符?
- powershell - PowerShell 在“(”上拆分会引发错误:“没有足够的)”。
- google-apps-script - 用于在从表单插入的行上插入时间戳的 Google 表格脚本
- python - Python 从二进制文件中读取“20”而不是“00”
- foreach - SwiftUI - 在 ForEach 中获取 TextField 数组
- linux - How to send a packed advertising packet with BlueZ 5 and the 5.4 kernel on Ubuntu 20.04
- google-chrome - Chrome Web Serial API not working in VueJs Web app
- javascript - 无法将库集成到 HTML - Chart.JS
- javascript - Jest unit test uncovered line on await/async return
- algorithm - Big O notation 2^log(n) equals what Big O and can something be greater