繁体   English   中英

如何在 DataFrame 中列出行值并添加为新列?

[英]How to list a row values and add as a new column in a 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 所以我想要的 output 如下:

    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 function 这样我就可以摆脱这个循环。

您可以将list构造函数作为聚合 function 沿轴 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]

您可以使用插入 function 插入新列。 这应该可以解决您的问题。

def append_new_column():
data = {"C1": [0.98,  1.10], "C2": [1.25,  0.99],
    "C3": [1.3,   1.41], "C4": [1.00,  .99] }
data = pd.DataFrame(data)
new_column = []
for i in range(len(data)):
    new_column.append(data.iloc[i,0:4].values)
data.insert(len(data.columns), "New Column", new_column, True)
return data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM