在使用数字列表搜索列后返回数据框中的所有行 - Python/Pandas

Posted

技术标签:

【中文标题】在使用数字列表搜索列后返回数据框中的所有行 - Python/Pandas【英文标题】:Returning all rows in a dataframe after searching a column with a list of numbers - Python/Pandas 【发布时间】:2020-05-13 03:31:41 【问题描述】:

我一直在尝试在数据框中搜索数字列表,每次在列中匹配一个数字时,我想返回整行并将其保存到新的数据框,然后保存到 Excel。

millreflist 是数字列表 - 可以是随机长度。

TUCABCP 是我正在搜索的数据框。

PO 是我要在其中搜索数字的列。

我已经使用 .loc 尝试了下面的代码,但是在打开新的 excel 文件时,我只得到了标题,没有行或数据。

millreflistlength = len(millreflist)

for i in range(millreflistlength): TUCABCP = TUCABCP.loc[TUCABCP['PO'] == millreflist[i]]

TUCABCP.to_excel("NEWBCP.xlsx", header=True, index=False)

我使用了以下问题作为参考,但它不包括您何时想使用数字列表进行搜索:Selecting rows from a Dataframe based on values in multiple columns in pandas

【问题讨论】:

请添加文本格式的示例数据集。阅读how to ask a good pandas question 【参考方案1】:

试试这样的:

## Get list, where each element is the index of a row which you want to keep
indexes = TUCABCP[TUCABCP['PO'].isin(millreflist)]
## Filter the original df to get just the rows with indexes in the list
df = TUCABCP[TUCABCP.index.isin(indexes)]

【讨论】:

只需要df = TUCABCP.loc[TUCABCP['PO'].isin(millreflist)] @ansev 您的回答有效。只是好奇为什么我的代码什么也没返回? @Shah 你在每个循环中重写了TUCABCP 的值。我猜'PO' 列中没有最后一个元素为millreflist 的行,所以你输出了一个空的df 如果您使用与重写文件相同的 Excel 名称。另外,这里不需要循环。您可以使用Series.isin 循环很慢

以上是关于在使用数字列表搜索列后返回数据框中的所有行 - Python/Pandas的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击列表框行项将搜索结果返回到文本框

我的(Vba)代码仅适用于列表中的1个变量,并且在列表框中使用多个变量时仅返回空白

R:如何从该列表中的所有数据框中删除行?

如果文本框中没有文本,jQuery 自动完成返回空列表

基于具有列表值的多列删除数据框中的重复行[重复]

如何从数字列表中获取所有可能的排列并存储在数据框中?