在Pandas DataFrame中将int转换为list

时间:2017-10-02 23:30:37

标签: python list pandas dataframe

我想转换数据框:

import pandas as pd
d = pd.DataFrame({id:[1, 2, 3]})

res = pd.DataFrame({id:[[1], [2], [3]]})

即将单元格中的每个元素转换为Python列表。

但是我试过了

res = d.apply(lambda row: [row.id], axis=1)

它返回了一个包含以下类型而不是类型列表的数据框:

<bound method Series.item of item 2\nName: ..

那么如何获取单元格中元素的列表类型呢?

2 个答案:

答案 0 :(得分:1)

这有效:

d['id'] = d['id'].apply(lambda x: [x])
d
#   id
#0  [1]
#1  [2]
#2  [3]

或直接在数据框上使用apply

d.apply(lambda r: [[r.id]], axis=1)

#id
#0  [1]
#1  [2]
#2  [3]

数据

d = pd.DataFrame({'id':[1, 2, 3]})         # notice the quote around id

答案 1 :(得分:1)

如果您拥有大型数据框,则避免使用apply可能是明智之举。尝试:

pd.Series(d.values.reshape(-1, 1).tolist()).to_frame(name=d.columns[0])
    id
0  [1]
1  [2]
2  [3]

<强>性能

d.shape
(1000000, 1)
1 loop, best of 3: 444 ms per loop  # psidom
1 loop, best of 3: 304 ms per loop  # coldspeed