将每个字典的多个值(每个键)映射并附加到数据框的不同列

时间:2018-12-10 23:22:34

标签: python pandas dictionary dataframe apply

具有具有键值的字典,我们如何映射其值以填充数据框中的不同列。 尝试使用 apply 函数填充多个数据框列,其中该函数包含值列表范围内的迭代,但没有成功。有帮助吗?

插图:

{'k1':['v1', 'v2'], 'k2':['v3', 'v4', 'v5']}

所需结果(数据框):

    col1  col2  col3
k1  v1    v2
k2  v3    v4    v5

1 个答案:

答案 0 :(得分:0)

这是使用itertools.zip_longestpd.DataFrame构造函数的一种方法:

from itertools import zip_longest

d = {'k1':['v1', 'v2'], 'k2':['v3', 'v4', 'v5']}

enum = enumerate(zip_longest(*d.values(), fillvalue=np.nan), 1)

df = pd.DataFrame(dict(enum), index=d).add_prefix('col')

使用格式化字符串文字的另一种表示形式(Python 3.6 +; PEP498):

df = pd.DataFrame({f'col{i}': tup for i, tup in enum}, index=d)

结果:

print(df)

   col1 col2 col3
k1   v1   v2  NaN
k2   v3   v4   v5