首页 > 解决方案 > Python:根据另一列上的数据在 csv 文件中创建新列和行

问题描述

我有一个 output.csv 文件,一个大型数据集,下面有类似的输出:

index, url
0, www.example1.com
1,  
2, 
3, www.example2.com
4, www.example3.com

我想添加一个新列,将邮件发送到 csv。我基本上是在 output.csv 的 column2 中抓取 url(在上面的示例中,第 1 行和第 2 行是空的,不存在 url)以提取 url 中存在的邮件。所以我需要的最终输出应该是

 index, url, mail
    0, www.example1.com, example1@gmail.com
    1,  
    2, 
    3, www.example2.com, example2@yahoo.com
    4, www.example3.com, example3@hotmail.com

有没有办法可以做到这一点?

标签: python-3.xweb-scraping

解决方案


我知道这不是最好的方法,但您可以通过使用 pandas 库来帮助自己并创建如下内容:

import pandas as pd

df = pd.read_excel('output.xlsx')

def split_value(i):
    if type(i) == str:
        url = i.split('.')[1]+"@some_domaine"
    else:
        url = np.nan
    return url

df['mail'] = [split_value(i) for i in df.url.values]

df
**Out[1]:** 
index           url                   mail
0  www.example1.com  example1@some_domaine
1               NaN                    NaN
2               NaN                    NaN
3  www.example2.com  example2@some_domaine
4  www.example3.com  example3@some_domaine

df.to_excel(onemoreoutput.xlsx)

推荐阅读