熊猫将数组提取到列
如何将数组(对于系列中的所有元素,数组的长度都是恒定的)有效地提取到列中?
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列转换为列表(嵌套列表),将其转换为数据框,然后将新数据框与初始数据框连接起来。