python - 如何在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) ..直到单元格值/数据为空。
解决方案
在我看来,您在这里不需要显式的 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
推荐阅读
- kubernetes - kubernetes config map 数据值外化
- python - 如何使用 Python click 限制密码尝试次数?
- spring-kafka - 从另一个远程 Spring 引导连接远程 kafka
- tmux - 为什么 iterm2 中的 tmux 窗口有不同的外观?
- ios - Apple 分发证书在带有 Xcode 11.3.1 的 macOS 10.14.6 中不起作用
- unity3d - 在世界空间中转换 ui 的鼠标坐标
- django - Django 管理界面在生产中缺少 css 样式
- python - 如何使用python在excel中进行Vlookup?(有2个条件)
- r - 如果函数给出错误再次尝试该迭代(R)
- python - JupyterLabs 中的 JupyterDash 在先前的单元格中使用 plotly express 后失败