python-3.x 从列的列表中的元素获取字典,其中键值对是元素数和Pandas中的元素值

xriantvc  于 2022-12-20  发布在  Python
关注(0)|答案(1)|浏览(130)

我有一个数据框

df = pd.DataFrame([["X",["A","B","C","D"]],["Y",["E","F","G"]],["Z",["H","I","J","K","L"]]],columns=["type","id"])
type    id
X   [A, B, C, D]
Y   [E, F, G]
Z   [H, I, J, K, L]

我需要两个新列id_len,它告诉id列列表中的元素数量,以及id_dict,它使id_len和id列的字典成为键-值。

    • 预期输出**

一个二个一个一个
怎么做呢?

ilmyapht

ilmyapht1#

我希望这能有所帮助:

df.assign(id_len=df['id'].map(lambda x: list(range(1,len(x)+1))), 
          id_dict=df['id'].map(lambda x: dict(enumerate(x,1))))

>>>
'''
    type                           id            id_len                                  id_dict
0      X         ['A', 'B', 'C', 'D']      [1, 2, 3, 4]         {1: 'A', 2: 'B', 3: 'C', 4: 'D'}
1      Y              ['E', 'F', 'G']         [1, 2, 3]                 {1: 'E', 2: 'F', 3: 'G'}
2      Z    ['H', 'I', 'J', 'K', 'L']   [1, 2, 3, 4, 5] {1: 'H', 2: 'I', 3: 'J', 4: 'K', 5: 'L'}

相关问题