numpy 如何将一个带数组的系列拆分为多个系列?

p8ekf7hl  于 2022-12-13  发布在  其他
关注(0)|答案(3)|浏览(102)

我的数据集的一列包含numpy arrays作为元素。我想把它拆分成多列,每列都有一个数组的值。现在的数据如下所示:

column
0   np.array([1,2,3,4])
1   np.array([5,6,7,8])

我想把它转换成:

col1 col2 col3 col4
0    1    2    3    4
1    5    6    7    8
col17t5w

col17t5w1#

作为替代方案:

df = pd.DataFrame(data={'col':[np.array([1,2,3,4]),np.array([5,6,7,8])]})

new_df = pd.DataFrame(df.col.tolist(), index= df.index) #explode column to new dataframe and get index from old df.
new_df.columns = ["col_{}".format(i) for i in range(1,len(new_df.columns) + 1)]

'''
   col_1  col_2  col_3  col_4
0      1      2      3      4
1      5      6      7      8
'''
h5qlskok

h5qlskok2#

基于pandas.DataFrame.from_records的另一种可能的解决方案:

out = pd.DataFrame.from_records(
    df['col'], columns=[f'col{i+1}' for i in range(len(df.loc[0, 'col']))])

输出量:

col1  col2  col3  col4
0     1     2     3     4
1     5     6     7     8
5ssjco0h

5ssjco0h3#

我希望我已经很好地理解了你的问题。你可以利用.apply方法的result_type="expand"

df = df.apply(
    lambda x: {f"col{k}": vv for v in x for k, vv in enumerate(v, 1)},
    result_type="expand",
    axis=1,
)
print(df)

印刷品:

col1  col2  col3  col4
0     1     2     3     4
1     5     6     7     8

相关问题