根据与熊猫数据框的另一列值的部分匹配获取多列值

希哈布·乌拉

我有以下数据框:

URL_WITH_EMAILS_DF = pd.DataFrame(data=[{'main_url': 'http://keilstruplund.dk', 'emails': ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]','[email protected]', '[email protected]', '[email protected]', '[email protected]',  '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]']},                                        
                                 {'main_url': 'http://kirsebaergaarden.com', 'emails': ['[email protected]','[email protected]']},
                                 {'main_url': 'http://koglernes.dk', 'emails': ['[email protected]']},
                                  {'main_url': 'http://kongehojensbornehave.dk', 'emails': []}
                               ])

但是,我只想保留名为“emails”的属性的值,它们在“@”之后的每个元素的值都与“main_url”属性的相应值相同,但在“http://”之后会产生以下数据框:

URL_WITH_EMAILS_DF = pd.DataFrame(data=[{'main_url': 'http://keilstruplund.dk', 'emails': ['[email protected]']},                                        
                                 {'main_url': 'http://kirsebaergaarden.com', 'emails': ['[email protected]']},
                                 {'main_url': 'http://koglernes.dk', 'emails': ['[email protected]']},
                                  {'main_url': 'http://kongehojensbornehave.dk', 'emails': []}
                               ])

在此处输入图像描述

考虑到我有数百万行来实现转换这一事实,任何提示或方法都是可观的

奥努尔·古文

试一试,我认为它应该能够处理几百万行。

def list_check(emails_list, email_match):
    match_indexes = [i for i, s in enumerate(emails_list) if email_match in s]
    return [emails_list[index] for index in match_indexes]

# Parse main_url to get domain column
df['domain'] = list(map(lambda x: x.split('//')[1], df['main_url']))

# Apply list_check to your dataframe using emails and domain columns
df['emails'] = list(map(lambda x, y: list_check(x, y), df['emails'], df['domain']))

# Drop domain column
df.drop(columns=['domain'], inplace=True)

list_check函数检查您的匹配字符串是否在电子邮件列表中并获取匹配索引,然后使用匹配的索引从电子邮件列表中获取值并在列表中返回这些值。

输出:

输出df

获取匹配索引的来源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过根据列值熊猫数据框将一列置于另一列之下,将多列合并为一列

根据熊猫中数据框的另一列的值添加一列

根据另一列中的相同值组合熊猫数据框列中的文本值

基于另一列熊猫数据框迭代列值匹配值

根据熊猫数据框中另一列的最后一个值填充列

熊猫根据另一列的值移动列数据

熊猫:根据另一列的值从列中提取值,并分成单独的数据框

用熊猫数据框中另一列的值在多列中填充Na

根据另一列中的值将值添加到熊猫数据框的一列中

根据特定月份的值过滤熊猫数据框,并以另一列为条件

根据另一列的值按分位数过滤熊猫数据框

根据条件在熊猫数据框中将一列的值提供给另一列

如果多列中的值与另一个数据框匹配,则根据 pandas 的日期范围获取总和

熊猫:返回数据框,其中一列的值大于另一列的值

根据另一列具有输入数据框的值替换一列的值

根据一列的连续值获取数据框的行

快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

根据熊猫中另一列上的值在数据框中创建一个新列

如何获取熊猫数据框列的最大值,然后在另一列中找到对应的值?

如何调节一列的循环以填充熊猫数据框中的另一列值

如何过滤数据框并根据熊猫数据框中的另一列获取记录总数?

根据数据框中另一列的值添加一列

Spark数据框:根据另一列的值提取一列

Pyspark数据框:根据另一列的值提取一列

如何获得匹配数据框中的一列的值与另一列

熊猫根据另一列中的值替换值

熊猫,根据另一列的值减去值

如何根据来自另一个表的检查替换熊猫数据框中的一列中的值

根据另一列熊猫的值添加新列