我想转换数据框:
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: ..
那么如何获取单元格中元素的列表类型呢?
答案 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