将数组添加到dataframe列

时间:2016-10-14 05:05:41

标签: python arrays pandas dataframe

我们假设我有这个数据帧df

   'Location'  'Rec ID'  'Duration'
0     Houston       126          17
1     Chicago       338        19.3

我想添加一个包含与我的录音相对应的数组的列,如:

   'Location'  'Rec ID'  'Duration'                           'Rec'
0     Houston       126          17    [0.2, 0.34, 0.45, ..., 0.28]
1     Chicago       338        19.3    [0.12, 0.3, 0.41, ..., 0.39]

当我执行df.set_value()命令时,出现以下错误:

ValueError:使用序列设置数组元素。

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是指定list lists,只需要listslength DataFrame相同的长度:

arr = [[0.2, 0.34, 0.45, 0.28], [0.12, 0.3, 0.41, 0.39]]
print (arr)
[[0.2, 0.34, 0.45, 0.28], [0.12, 0.3, 0.41, 0.39]]

print (len(arr))
2
print (len(df))
2

df["'Rec'"] = arr
print (df)
   'Location'     'Rec  ID'  'Duration'                    'Rec'
0           0  Houston  126        17.0  [0.2, 0.34, 0.45, 0.28]
1           1  Chicago  338        19.3  [0.12, 0.3, 0.41, 0.39]

如果使用numpy array,请先转换tolist

arr = np.array([[0.2, 0.34, 0.45, 0.28], [0.12, 0.3, 0.41, 0.39]])
print (arr)
[[ 0.2   0.34  0.45  0.28]
 [ 0.12  0.3   0.41  0.39]]

df["'Rec'"] = arr.tolist()

print (df)
   'Location'     'Rec  ID'  'Duration'                    'Rec'
0           0  Houston  126        17.0  [0.2, 0.34, 0.45, 0.28]
1           1  Chicago  338        19.3  [0.12, 0.3, 0.41, 0.39]