首页 > 解决方案 > 如何列出行值并在 DataFrame 中添加为新列?

问题描述

我有一个数据集如下:

data = {"C1": [0.98,  1.10], "C2": [1.25,  0.99],
        "C3": [1.3,   1.41], "C4": [1.00,  .99] }
data = pd.DataFrame(data)

    C1    C2    C3    C4
0  0.98  1.25  1.30  1.00
1  1.10  0.99  1.41  0.99

我想要一个新列,它是list同一行中所有数字的一个。所以我想要的输出如下:

    C1    C2    C3    C4          New_Column
0  0.98  1.25  1.30  1.00  [0.98,  1.25,  1.30,  1.00]
1  1.10  0.99  1.41  0.99  [1.10,  0.99,  1.41,  0.99]
 

我已经开发了以下代码:

    data["New_Column"] = np.nan

    def create_list_of_numbers(data):
        for i in range(len(data)-1):

        print(data.iloc[i,:4].values)  # Gives the list of values of first four columns
        data.iloc[i,dt.columns.get_loc("New_Column")] = data.iloc[i,:4].values

    return data

我收到以下错误:“ValueError:使用序列设置数组元素。”

即使这个函数有效,我认为应该有一种使用apply函数的方法,这样我就可以摆脱这个循环。

标签: pythonpandaslistdataframe

解决方案


您可以list沿轴 1(索引)将构造函数作为聚合函数传递

data['New_column'] = data.agg(list, axis=1)

输出:

     C1    C2    C3    C4               New_column
0  0.98  1.25  1.30  1.00   [0.98, 1.25, 1.3, 1.0]
1  1.10  0.99  1.41  0.99  [1.1, 0.99, 1.41, 0.99]

推荐阅读