Pandas:将函数应用于行,写入新列

将函数应用于数据框


我目前有以下数据框:


数据


url                            visitors

http://somedomain.com          200000

http://someotherdomain.com     150000

http://somenewdomain.com       11000

对于数据框中的每一行,我喜欢将两个函数应用于 url 列,然后将每个结果写入两个不同的列“meta”和“content”。


职能:


def metacrawler(url)

    ...

    return data


def contentcrawler(url)

    ...

    return data


# Counter

progress = 0

环形


for index, row in data.iterrows():

    print(str(progress)," out of ",str(len(data)))

    print('Starting meta crawling.')

    row['meta'] = metacrawler(row["url"])

    print('Starting content crawling.')

    row['content'] = contentcrawler(row["url"])

    print('Complete.')

    progress += 1

但是,当我在几次迭代后中止该过程时,我发现没有数据写入数据框中。也没有创建列。


我做错了什么?


素胚勾勒不出你
浏览 133回答 1
1回答

MMMHUHU

您可以使用该.apply()功能的文档与result_type='expand'In [3]: df = pd.DataFrame({'one':[1,2,3,4], 'two':[5,6,7,8]})In [4]: df.apply(lambda x: (sum(x), sum(x)), axis=1, result_type='expand')Out[4]:    0   10   6   61   8   82  10  103  12  12In [5]: df[['new', 'etc']] = df.apply(lambda x: (sum(x), sum(x)), axis=1, result_type='expand')In [6]: dfOut[6]:   one  two  new  etc0    1    5    6    61    2    6    8    82    3    7   10   103    4    8   12   12编辑:如果要显示进度,请单独定义应用功能即def func(row):    print(row)    return sum(row), sum(row)In [3]: df = pd.DataFrame({'one':[1,2,3,4], 'two':[5,6,7,8]})In [4]: df.apply(func), axis=1, result_type='expand')Out[4]:    0   10   6   61   8   82  10  103  12  12In [5]: df[['new', 'etc']] = df.apply(lambda x: (sum(x), sum(x)), axis=1, result_type='expand')In [6]: dfOut[6]:   one  two  new  etc0    1    5    6    61    2    6    8    82    3    7   10   103    4    8   12   12
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python