繁体   English   中英

pandas 将数组提取到列

[英]pandas extract array to columns

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

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)

印刷:

   foo  bar_0  bar_1  bar_2
0    1      1      1      1
1    2      2      2      2
2    3      3      3      3

这个怎么样:

>>> 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列转换为列表(嵌套列表),将其转换为 dataframe,然后将新的 dataframe 与您的初始 dataframe 连接起来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM