首页 > 解决方案 > 如何将一系列元组转换为 DataFrame?

问题描述

我正在尝试在数据框中的其他列中添加一些额外的数据。

考虑这个示例代码:

import pandas
import numpy

def more_data(d):
    return 1, 2

df = pandas.DataFrame({"A":[1, 2, 3], "B":[17, 16, 15]})

x = df.apply(more_data, axis=1)
df1 = pandas.DataFrame(x)
df2 = pandas.concat([df, df1], axis=1)

print(df2)

输出是:

A  B       0
0  1  17  (1, 2)
1  2  16  (1, 2)
2  3  15  (1, 2)

毫不奇怪,因为 apply() 返回一个元组序列,它被忠实地作为一列元组添加到数据帧中。但是,我想要的是另外两列,其中包含在元组中返回的值。那将如何运作?

标签: pandas

解决方案


您对自己的解决方案非常接近,如果您将数据框转换为列表,然后将其构造为再次定义列的数据框,它可以工作:

def more_data(d):
    return 1, 2

df = pd.DataFrame({"A":[1, 2, 3], "B":[17, 16, 15]})

x = df.apply(more_data, axis=1)
df1 = pd.DataFrame(x.tolist(), columns=['Col1', 'Col2']) # <-- line which is different
df2 = pd.concat([df, df1], axis=1)

   A   B  Col1  Col2
0  1  17     1     2
1  2  16     1     2
2  3  15     1     2

推荐阅读