按行读表

import IPy as IP
import xlrd
import pandas as pd

# no header
# data = pd.read_excel('F:/test/white_black.xlsx',header=None)

data = pd.read_excel('F:/test/white_black.xlsx')
data_list = []
for i in range(len(data)):
    li = str(data.iloc[i].tolist()[0])
    lis = li.split(',')
    l = lis[0].split(',')
    for j in range(len(l)):
        data_list.append(l[j])

# print(data_list)
all_white_black = []
for i in data_list:
    a = IP.IP(i)
    for j in a:
        #print(j)
        all_white_black.append(str(j))

#print(all_white_black)


# target ip list
target_ip_data = pd.read_excel('F:/test/ip.xlsx')
target_ip_list = []
for i in range(len(target_ip_data)):
    tmp_li = str(target_ip_data.iloc[i].tolist()[0])
    tmp_lis = tmp_li.split()
    tem_l = tmp_lis[0].split()
    for j in range(len(tem_l)):
        target_ip_list.append(tem_l[j])
# print(target_ip_list)
# judege target_ip_list
for i in target_ip_list:
    if i in all_white_black:
        print("%s ture " % i)

    else:
        print("%s false" % i)

<think>好的,用户想知道如何用Pandas按取Excel文件。首先,我需要回忆一下Pandas取Excel的基本方法。根据引用[2]和[3],pandas.read_excel函数是关键,通常用来取整个格,但用户需要逐处理。 用户的问题是关于逐取,可能需要遍历每一。常见的做法是先取整个DataFrame,然后通过循环来处理每一。比如引用[2]中的例子,使用pan.index.values遍历索引,然后用pan.loc[row, [列名]]获取每数据,并转成字典。这可能是一个解决方案。 另外,要考虑是否需要分块取,特别是处理大文件时,可以用chunksize参数。不过用户的问题可能更偏向于逐处理已取的数据,而不是分块取。所以先介绍基本的迭代方法,再提优化方法。 还需要注意参数的使用,比如header、usecols等,确保取正确的数据。例如,引用[3]提到header和index_col的设置会影响数据定位。如果用户的数据有标题,可能需要指定header=0。 然后,示例代码部分,需要展示如何用iterrows()或者itertuples()来遍历。iterrows()返回索引和数据,虽然效率不高,但对于小文件足够。itertuples()更快,但返回的是命名元组。根据引用[2]的例子,他们用了index.values和loc方法,不过iterrows可能更直观。 另外,可能需要提醒用户注意性能问题,如果数据量很大,逐处理可能较慢,这时候分块取更合适。例如,引用[5]提到安装最新版本的Pandas,确保功能正常,可能影响性能优化。 总结步骤:1. 使用read_excel取整个文件。2. 遍历每一,转换成字典或其他结构。3. 处理每数据。同时提供两种方法:iterrows和itertuples,并比较它们的优缺点。最后,给出示例代码,并引用相关引用内容作为支持。 最后,生成相关问题,可能涉及取参数、处理大文件、优化性能等,参考用户提供的示例中的相关问题结构。</think>### 如何用Pandas按取Excel文件? #### 方法说明 1. **取Excel文件** 使用$pandas.read_excel()$函数取整个Excel文件,生成DataFrame对象。通过参数$sheet\_name$指定工作,$header$设置标题,$usecols$选择特定列[^3]。 ```python import pandas as pd df = pd.read_excel("文件路径.xlsx", sheet_name="工作名") ``` 2. **逐遍历数据** - **`iterrows()`方法** 遍历DataFrame的,返回索引和数据(Series格式)。适合小规模数据处理。 ```python for index, row in df.iterrows(): print(f"第{index}数据:", row.to_dict()) # 转为字典格式 ``` - **`itertuples()`方法** 更高效的遍历方法,返回命名元组(namedtuple)。推荐用于大规模数据。 ```python for row in df.itertuples(): print(f"第{row.Index}数据:", row._asdict()) # 转为字典格式 ``` 3. **按条件筛选** 结合逻辑达式提取特定,例如提取“模块”列为“登录”的: ```python filtered_rows = df[df["模块"] == "登录"] for _, row in filtered_rows.iterrows(): print(row["case_id"], row["case_title"]) ``` #### 完整示例 ```python import pandas as pd # 取Excel文件 df = pd.read_excel("test.xlsx", sheet_name="Sheet1") # 按遍历并处理数据 test_data = [] for index, row in df.iterrows(): row_data = row[["case_id", "module", "case_title"]].to_dict() test_data.append(row_data) print(test_data) ``` #### 注意事项 - **性能优化**:大文件建议使用$chunksize$分块取(如$pd.read_excel(..., chunksize=1000)$)[^3]。 - **数据类型**:通过$dtype$参数指定列数据类型(如$dtype={"金额列": "float64"}$),避免自动推断错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值