【发布时间】:2019-10-17 11:22:50
【问题描述】:
我有一个 pd.Series 列表。
即df = pd.Series([['a', 'b'], ['c', 'd']])
我想将其转换为二维 numpy 数组。
这样做:np.array(df.values) 不会产生所需的结果,因为列表被视为对象。
如何获取二维数组?
【问题讨论】:
标签: python-3.x pandas numpy
我有一个 pd.Series 列表。
即df = pd.Series([['a', 'b'], ['c', 'd']])
我想将其转换为二维 numpy 数组。
这样做:np.array(df.values) 不会产生所需的结果,因为列表被视为对象。
如何获取二维数组?
【问题讨论】:
标签: python-3.x pandas numpy
在您的解决方案中,仅将值转换为列表:
print (np.array(df.values.tolist()))
[['a' 'b']
['c' 'd']]
或者先创建DataFrame:
print (pd.DataFrame(df.values.tolist()).values)
【讨论】:
%%timeit 结果:np.array(df.values.tolist()):每个循环 683 µs ± 20 µs(平均值 ± 标准偏差,7 次运行,每个循环 1000 个循环)np.stack(df.values):每个循环 759 µs ± 50.5 µs(平均值 ± 标准偏差。 7 次运行,每次 1000 次循环)
只需申请pd.Series:
df.apply(pd.Series).values
【讨论】:
好的,我刚刚发现np.stack 也可以这样做。
df = pd.Series([['a', 'b'], ['c', 'd']])
np.stack(df.values).shape
结果
(2, 2)
【讨论】: