首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据其他列向Pandas添加列

如何根据其他列向Pandas添加列
EN

Stack Overflow用户
提问于 2015-01-19 11:08:15
回答 1查看 473关注 0票数 2

我正在使用Pandas,我有一个非常基本的数据格式:

代码语言:javascript
复制
                   session_id              datetime
5  t0ubmqqpbt01rhce201cujjtm7  2014-11-28T04:30:09Z
6  k87akpjpl004nbmhf4loiafi72  2014-11-28T04:30:11Z
7  g0t7hrqo8hgc5vlb7240d1n9l5  2014-11-28T04:30:12Z
8  ugh3fkskmedq3br99d20t78gb2  2014-11-28T04:30:15Z
9  fckkf16ahoe1uf9998eou1plc2  2014-11-28T04:30:18Z

我希望根据当前列的值增加第三栏:

代码语言:javascript
复制
df['key'] = urlsafe_b64encode(md5('l' + df['session_id'] + df['datetime']))

但我收到:

TypeError:必须转换为缓冲器,而不是系列

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 11:13:58

您需要使用pandas.DataFrame.apply。下面的代码将对df的每一行应用lambda函数。当然,您可以定义一个单独的函数(如果您需要做更复杂的事情)。

代码语言:javascript
复制
import pandas as pd
from io import StringIO
from base64  import urlsafe_b64encode
from hashlib import md5

s = '''                   session_id              datetime
5  t0ubmqqpbt01rhce201cujjtm7  2014-11-28T04:30:09Z
6  k87akpjpl004nbmhf4loiafi72  2014-11-28T04:30:11Z
7  g0t7hrqo8hgc5vlb7240d1n9l5  2014-11-28T04:30:12Z
8  ugh3fkskmedq3br99d20t78gb2  2014-11-28T04:30:15Z
9  fckkf16ahoe1uf9998eou1plc2  2014-11-28T04:30:18Z'''

df = pd.read_csv(StringIO(s), sep='\s+')

df['key'] = df.apply(lambda x: urlsafe_b64encode(md5('l' + x['session_id'] + x['datetime'])), axis=1)

注意:我无法让哈希位在我的机器上工作--不幸的是,有些unicode错误(可能是因为我在使用Python 3),而且我没有时间调试它的内部工作,但是我非常确定的是:P

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28023225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档