熊猫将数组提取到列

如何将数组(对于系列中的所有元素,数组的长度都是恒定的)有效地提取到列中?

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

即将数组提取[1,1,1]到一bar_0, bar_1, bar_3列?

有没有比手动迭代数组中的索引并调用更好的方法pandas.apply

回答

import pandas as pd

d = pd.DataFrame({"foo": [1, 2, 3], "bar": [[1, 1, 1], [2, 2, 2], [3, 3, 3]]})

d = pd.concat([d, d.pop("bar").apply(pd.Series).add_prefix("bar_")], axis=1)
print(d)

印刷:

import pandas as pd

d = pd.DataFrame({"foo": [1, 2, 3], "bar": [[1, 1, 1], [2, 2, 2], [3, 3, 3]]})

d = pd.concat([d, d.pop("bar").apply(pd.Series).add_prefix("bar_")], axis=1)
print(d)


回答

这个怎么样:

>>> d.join(pd.DataFrame(d['bar'].to_list(), columns=['bar_1', 'bar_2', 'bar_3']))
   foo        bar  bar_1  bar_2  bar_3
0    1  [1, 1, 1]      1      1      1
1    2  [2, 2, 2]      2      2      2
2    3  [3, 3, 3]      3      3      3

您将bar列转换为列表(嵌套列表),将其转换为数据框,然后将新数据框与初始数据框连接起来。


以上是熊猫将数组提取到列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>