我有两个看起来像这样的表:

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'])

由于该列中的列表,我收到了无法散列的列表错误。 有关如何解决此问题的指针将不胜感激。

#1楼 票数:0

您可以使用字典来映射列表:

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)

输出量

   Name         job_id
0   tom  [coder, cook]
1  nick   [coder, cop]
2  juli        [coder]

#2楼 票数:0 已采纳

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])

输出:

>>>dfA

    Name    job_id
0   tom     ['coder', 'cook']
1   nick    ['coder', 'cop']
2   juli    ['coder']

  ask by Andy G translate from so

未解决问题?本站智能推荐:

4回复

Pandas 列表列,在每个列表中追加一个新列

例如,我得到了一个 pd.Series 列表,如下所示 我想要做的是,我想将每个元素的(索引 + 1)添加到每个列表中,例如 我怎样才能做到这一点?
1回复

从列表列创建一个新的 Pandas 数据框

我在 Pandas 数据框中有一列(长度 = 32000),其中每行包含一个正好包含 1,200 个项目的列表。 我将如何转换此列并拆分列表以创建形状为 32000x1200 的新 DataFrame? 我尝试创建一个新的数据X = pd.DataFrame(data['data']) ( X
3回复

在 Pandas 数据框中创建一个新的列表列,其中包含来自另一列的唯一值

我有一个包含一列列表的数据框: 我需要创建一个新列,如果列表中存在重复项,它会为每一行显示一个不同的列表,否则只是相同的列表。 我试过这个: 但我收到此错误:
2回复

使用pandas创建一个包含DataFrame中列表的新列

给定以下DataFrame : 我想创建一个新列,其中wach条目是一个列表,它是它所在行的函数。特别是它应该有一个列表,其中所有正整数不大于列t的条目。 所以输出应该是: 换句话说,我想将list(range(1,t+1))应用于每一行。 我知道如何在循环中执行它,但有一个
2回复

将列表列表添加到 Pandas 数据框,其中列表的每一项都是一个新列

我有 10 个列表(可变长度)看起来像这样,但每个内部列表的长度相同。 我还有一个包含 10 个数据帧的列表,其中每个 df 如下所示: 我想要做的是将此列表列表添加到每个数据帧,其中的结果如下所示: 我知道如何将单个列表附加到现有的数据框(并且它有效),但我想一次性完成这一切。
2回复

Pandas 列表列,通过迭代(选择)三列的每个列表元素作为新的列和行来创建多列[重复]

这个问题在这里已经有了答案: 在 Pandas DataFrame 中取消嵌套( 分解)多个列表列的有效方法(5 个回答) 7 个月
1回复

我应该创建新的列表列表还是一个功能

我是Python和Pandas的新手。 当我在一个list创建许多DataFrame ,最好有不同的列表并在每个步骤中追加,还是仅在一个大型函数中创建它们? 例如,我有一个DataFrame列表,它们具有相同的列,但值和行号不同: 现在,我想按列的值平均每个数据帧: 接下
2回复

如何从不同的列在 Pandas 中创建一个列,匹配一个列表

我在 Pandas 中有一个 DataFrame,其中一列有一堆位置编号。 例如: 所以我想要做的是创建另一列,将这些数字转换为列表中的区域编号。 例如: 所以结果应该是 所以我尝试这样做的方式是 我不断得到“f”一个{type(self)的真值。 name } 不明确。 “ V