首页 > 解决方案 > 如何在while循环中获取excel特定单元格的值

问题描述

我是 python 和 pandas 的新手,我有一个文本文件(data.txt),其中的“内容”就像。“123 456 789 101123 456 789 101 112 113 110 112 123 456 789 101 112 113 110 113 123 456 789 101 112 113 110 110 ...... combination.xlsx),它带有某种组合。(在excel表单元格A1 = 123 456,A2 = 456 789,A3 = 789 101123,.......),我的问题是如何使用/获取每个单元格值from (combination.xlsx) 用于计算出现频率,可能在 data.txt 中可用并在另一个文本文件 (final.txt) 中打印。想要创建一个while循环,该循环将从选择第一个单元格值)A1)开始并开始一个循环,如果它是=或大于1,那么它将在final.txt中打印,否则它应该选择第二个单元格值(A2) ..直到单元格值/数据为空。

标签: pythonexcelpandasdataframewhile-loop

解决方案


在我看来,您在这里不需要显式的 while 循环。您可以使用pd.read_excel获取每个单元格值 ,它返回dataframe所有单元格的 a 。要计算发生频率,对于数据帧的每一行,您可以使用len以下re.findall正则表达式\b({x})\b:此正则表达式确保数字序列(x在此特定 f 字符串上)将仅在单词边界之间匹配。要打印到另一个文件,您可以使用df["Qnt"].to_csv

import pandas as pd
import re

data_txt = "123 456 789 101123 456 789 101 112 113 110 112 123 456 789 101 112 113 110 113 123 456 789 101 112 113 110 110"

# read XLSX cells
df = pd.read_excel("combination.xlsx", header=None, names=["Comb"])

# count occurrences
find_qnt = lambda x: len(re.findall(rf"\b({x})\b", data_txt))

# apply to each row
df["Qnt"] = df["Comb"].apply(find_qnt)
print(df)

# print into another text file
df["Qnt"].to_csv("final.txt", index=False)

来自df的输出

         Comb  Qnt
0     123 456    3
1     456 789    4
2  789 101123    1

推荐阅读