例如,我得到了一个 pd.Series 列表,如下所示 我想要做的是,我想将每个元素的(索引 + 1)添加到每个列表中,比如 我怎样才能做到这一点? ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有两个看起来像这样的表:
data = [['tom', [3,5]], ['nick', [3,8]], ['juli', [3]]]
dfA = pd.DataFrame(data, columns = ['Name', 'job_id'])
data1 = [['coder', 3], ['cook', 5], ['cop', 8]]
df_B = pd.DataFrame(data1, columns = ['job', 'job_id'])
我想在第一个表中添加一列,使其看起来像这样:
data_comb = [['tom', ['coder','cook']], ['nick', ['coder','cop']], ['juli', ['coder']]]
df_comb = pd.DataFrame(data_comb, columns = ['Name', 'jobs_done'])
由于列中的列表,我收到了一个不可散列的列表错误。 关于如何解决这个问题的指针将不胜感激。
您可以使用字典 map 列表:
lookup = {key : value for value, key in data1}
dfA['job_id'] = dfA.job_id.apply(lambda x : [lookup[v] for v in x])
print(dfA)
Output
Name job_id
0 tom [coder, cook]
1 nick [coder, cop]
2 juli [coder]
mapper = df_B.set_index('job_id').to_dict()['job']
dfA['job_id'] = dfA['job_id'].apply(lambda lst: [mapper.get(x) for x in lst])
output:
>>>dfA
Name job_id
0 tom ['coder', 'cook']
1 nick ['coder', 'cop']
2 juli ['coder']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.