gpt4 book ai didi

python - 根据单元格值定位行

转载 作者:行者123 更新时间:2023-12-01 08:30:47 31 4
gpt4 key购买 nike

//编辑:这个问题是一个子问题。对于更短、更好的示例,它有更好的回复,请检查 This Post

我对 python 很陌生,对 pandas 更陌生。我使用它至少一个月了,我想我已经掌握了大部分基础知识。

我当前的任务是将值写入 xslx 文件内特定空间中的某个单元格。

情况

  • 我有一个非常大的 Excel 文件,其中包含各种数据,从名称到电子邮件地址和一切。我还有两个列表(.txt 文件)与其中的 excel 文件具有相同的电子邮件地址,但那些如果电子邮件符合某些安全检查,则电子邮件会得到验证,或者不是。根据结果​​,它们被存储在“Secured.txt”或“Unsecured.txt”文件。

  • 为了在 Excel 文件中写入和读取,我使用 pandas。

任务

在 Excel 文件中的“电子邮件”列旁边有一列,您可以在其中标记电子邮件是否受安全保护。我的实际任务是插入这些条目,具体取决于电子邮件所在的文本文件。

可能的解决方案

我解决这个问题的方法是读出每个 .txt 文件并使用列表和 for 循环将每个电子邮件地址存储在变量中。迭代这些电子邮件,我知道想要在 Excel 文件内查找电子邮件地址的位置并访问它旁边的单元格。同一行,不同列。由于电子邮件之前已根据安全验证进行了排序匹配,因此我只需将相应的值放入电子邮件旁边的验证单元格中即可。

问题

我的问题如下:如何根据其中的值处理特定行?我想找到包含变量“mails”实际内容的单元格的位置,这样我就可以移至它旁边的单元格。由于我知道所有列的名称,因此我实际上只需要电子邮件所在行的索引。我得到了 x 坐标,需要 y 坐标。

示例

到目前为止我所得到的是 .txt 文件的读数:

import pandas as pd
import os
import re


#fetching the mail adress through indexnumber out of the list
with open('Protected/Protected G.txt', 'r') as file:

#creating the regex pattern to sort out the mail adresses
rgx = '\S+@\S+'

#read the file and convert the list into a string
content = file.readlines()
content_str = ''.join(content)

#get the mails out of the "list" with regex
mails = re.findall(rgx, content_str)

#put each mailadress in a variable
for item in mails:
print(item)

这个虚拟数据框代表我正在使用的 Excel 工作表:

Dummy-Dataframe:

Forename Last Name Email Protection

1 John Kennedy John@gmx.net

2 Donald Trump Donald@gmx.net

3 Bill Clinton Bill@gmx.net

4 Richard Nixton Richard@gmx.net

我知道想要将存储在变量“item”中的实际地址传递给 pandas 的某种“定位”功能以便找出实际电子邮件位于哪一行。 一旦我知道地址位于哪一行,我现在就可以告诉 pandas 在下一列中写一个“x”(表示邮件 protected )或“o”(表示邮件不 protected )。

我完成的数据框可能如下所示:

Finished Dataframe:

Forename Last Name Email Protection

1 John Kennedy John@gmx.net x

2 Donald Trump Donald@gmx.net o

3 Bill Clinton Bill@gmx.net x

4 Richard Nixton Richard@gmx.net x

我真的很感谢你的帮助。

最佳答案

为了确保我理解您有一个 protected 文本文件和一个不 protected 文本文件。我做了一个很大的假设,你在这两者中都没有电子邮件。

import pandas as pd

df = pd.read_csv('Protected/Protected G.txt', header = None, sep = " ")
df.columns = ['Protected Emails']

df2 = pd.read_excel('dummy-excel')

if df2['Email'].isin(df) :
df2['Protection'] = 'x'
else :
df2['Protection'] = 'o'

writer = pd.ExcelWriter('ProtectedEmails.xlsx')
df2.to_excel(writer,'Sheet1') #or whatever you want to name your sheet
writer.save()

也许是这样的,虽然我不知道电子邮件的文本文件是什么样的。

关于python - 根据单元格值定位行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918100/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com