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
,它可以接收多种类型的数据,list
、int
或callable
。后者是一个函数,如果应该跳过该函数,则返回 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
中添加了1
,x
代表从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 文件中选择行的循环的主要内容,如果未能解决你的问题,请参考以下文章
通过 pandas.read_excel 在标题后跳过行范围