[英]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.