我有一个由成对数组组成的熊猫系列:
In [177]: pair_arrays
Out[177]:
15192 [[1, 9], [2, 14], [4, 1], [5, 36], [6, 8], [7,...
16012 [[0, 107], [1, 42], [2, 22], [3, 59], [4, 117]...
17523 [[0, 44], [1, 36], [2, 43], [3, 28], [4, 52], ...
...
我想将其重塑为包含两列的数据框,' x'和' y',其形状类似于:
In [179]: pd.DataFrame([{'x':1, 'y':42}, {'x':4, 'y':12}], columns=['x', 'y'])
Out[179]:
x y
0 1 42
1 4 12
...
我该怎么做?
答案 0 :(得分:2)
假设系列中的每个元素都是一对数组,并且每对都是一个序列,这应该有效:
pair_df = pd.DataFrame(np.vstack(pair_arrays.values), columns=['x','y'])
关键是pandas不知道如何使用对象数组。所以我在这里做的是将它转换为一个numpy对象数组。然后我堆叠对象数组,它会得到一个2D整数数组,然后将其转换回DataFrame。
从技术上讲,您目前不需要使用values
方法显式转换为numpy数组,但我认为这样更清晰,并且可能更长期安全。
答案 1 :(得分:0)
我可以通过Python进行如下操作:
pd.DataFrame(
[item for sublist in pair_arrays.tolist() for item in sublist],
columns=['x', 'y']
)
这适用于我的用例,但通过Python可能并不理想。