Pandas:创建一个从 excel 文件中选择行的循环

Posted

技术标签:

【中文标题】Pandas:创建一个从 excel 文件中选择行的循环【英文标题】:Pandas: Creating a loop that selects rows from excel file 【发布时间】:2021-05-16 12:03:38 【问题描述】:

我正在尝试读取某个包含特定数据的 Excel 文件并对其进行修改。虽然我无法创建一个读取前 3 行然后根据模式读取行的循环。我想先阅读行号 1、2、3,然后是 10、11、12,依此类推。我将不胜感激任何帮助。提前致谢。祝你有美好的一天!

import numpy 
import pandas as pd 

df = pd.read_excel('My Excel File.xlsx')
for i, row in df.iterrows(0,156,3): 
    dfi = df.iloc[(i)].mean()
    df1 =1/(numpy.log10(dfi))
    print(df1) 

【问题讨论】:

提示:如果在 read_excel() 函数中使用 'sheet_name' 参数,可以打开特定的工作表。 你能提供一个excel表格的格式样本吗? (即列和行)。我不明白你想要完成什么。 dfi 打印时应该是什么样子(预期输出)? 我正在尝试选择第一、第二、第三行以及它们包含的所有列,然后按照您的建议创建一个循环,以将我的代码也应用于另一组行(例如对于第 10、11、12 行),但我必须创建一个“步骤”。我期望收到一列或一行作为输出。谢谢! 【参考方案1】:

Pandas的@​​987654322@方法有一个参数叫skiprows,它可以接收多种类型的数据,listintcallable。后者是一个函数,如果应该跳过该函数,则返回 True,否则返回 False (documentation here)

在您的情况下,您没有描述如何跳过行的模式,您说的是第 1、2、3 行,然后是 10、11、12 行。假设您想跳过这些具体行,您可以这样做:

df = pd.read_excel('My Excel File.xlsx', skiprows=lambda x: (x+1) in [1,2,3,10,11,12])

这里我在x中添加了1x代表从0开始的索引(~行号)。

【讨论】:

非常感谢。这正是我的意思。我已经更改了我的代码。虽然它仍然不能正常工作。 Pycharm 建议 Union[float, Any]。老实说,我不知道应该如何继续,因为我是 Python 新手。 你用的是哪个版本的熊猫? 我使用的是 1.2.2【参考方案2】:

如果我正确理解了您的问题,您希望每 m 行每隔 n 行执行一次操作。为什么不在可迭代对象上使用条件?

import numpy 
import pandas as pd 

n = 3
m = 9

df = pd.read_excel('My Excel File.xlsx')
for idx in range(1, len(df.index)-n, m): 
    wanted_df_slice = df.iloc[[idx:idx+n-1]]
    do_stuff(wanted_df_slice)

编辑:@arhr 的方法似乎更优雅,因为它使用了一个专门用于此目的的参数,并避免添加 for 循环。

【讨论】:

以上是关于Pandas:创建一个从 excel 文件中选择行的循环的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个excel文件合并?

在 Pandas 中读取、选择和重新排列列

通过 pandas.read_excel 在标题后跳过行范围

Python:如何快速创建仅包含大型 Excel 工作表中特定列的 pandas 数据框?

熊猫。如何从 ZIP 存档中读取 Excel 文件

使用 Pandas 代码创建独立文件