根据单元格值定位行

//编辑:这个问题是一个子问题。对于一个更短更好的例子,它有更好的回复,请查看这篇文章

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

我当前的任务是将值写入 certrain 单元格中,位于 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 在下一列中写一个“x”,表示邮件受保护,或者写一个“o”,表示邮件不受保护。


哔哔one
浏览 213回答 3
3回答

回首忆惘然

您的问题与内容不同。这是一个简单的答案,不知何故,可能会有用。假设这是一个数据框: Z = pd.DataFrame([1,2,4,6])现在,让我们访问数字 4。只有一列。通常,第一列的名称为 0 作为标题。所需的数字 4 位于数据帧的第三位。由于python从0开始列表,dfs,数组等的索引,那么数字4的索引数为2。print(Z[0][2])这将输出 [4]尝试对您的数据应用相同的方法。只是男性肯定知道标题的名称。有时它们不是数字,而是字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python