python - Pandas 根据其他列中的值创建新列

标签 python pandas

假设我有以下 DataFrame:

dfff = pd.DataFrame({"name":[["a","b","c","d"]], "value":[[["a","aa"],["b","bb"],["c","cc"],["d","dd"]]]})


    name                         value
[a, b, c, d]    [[a, aa], [b, bb], [c, cc], [d, dd]]

从此我想要类似的东西:

   a       b      c        d
[a, aa] [b, bb] [c, cc] [d, dd]

对于单行,这段代码可以工作,但如果有多行,则不行:

for i in range(len(dfff)):
    for num, val in enumerate(dfff.name[i]):
        dfff[val] = [dfff.value[i][num]]
dfff.drop(["name","value"], axis = 1, inplace = True)

我如何实现这是 Pandas ?非常感谢

编辑:多行表示例:

    name                         value
0   [a, b, c, d]    [[a, aa], [b, bb], [c, cc], [d, dd]]
1   [c, d, e]       [[c, cc], [d, dd], [e, ee]]

它应该变成:

   a       b      c        d       e
[a, aa] [b, bb] [c, cc] [d, dd]   None
  None   None   [c, cc] [d, dd]   [e, ee]

最佳答案

我们可以在列表理解中zipnamevalue,然后迭代压缩的值以及每个名称-值pair 创建对应的record/dict

pd.DataFrame([dict(zip(*pair)) for pair in zip(df['name'], df['value'])])

         a        b        c        d        e
0  [a, aa]  [b, bb]  [c, cc]  [d, dd]      NaN
1      NaN      NaN  [c, cc]  [d, dd]  [e, ee]

关于python - Pandas 根据其他列中的值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67609535/

相关文章:

python - 获取调用 Python 脚本的快捷方式的目录

python - 重命名多索引列不起作用

python - 每个键具有多个值的字典列表作为数据框

python - Pandas:使用基于其他列值的函数有条件地填充列

python - 使用 Numpy 数组从结构返回数据

python - Matplotlib 以一种非常奇怪的方式绘制图形

python - Python 3 OpenCV无法录制和保存视频

javascript - 在没有ffmpeg的python中将ogg音频转换为wav

python - 当列数是动态的时,如何从数据框中过滤数据?

python - 如何对 DataFrame 中特定列的行进行排序?