如何将Pandas DataFrame的列转换为NumPy数组(延伸问题)
实现DataFrame列转置为NumPy数组
嘿,这个需求其实超简单,你只需要在to_numpy()的结果后面加上转置操作就搞定啦!
首先回顾你的原始DataFrame:
import pandas as pd df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}, index=['a', 'b', 'c'])
df.to_numpy()默认会把DataFrame的行作为NumPy数组的第一维度,而你想要的是把列作为第一维度,这时候只需要对结果做转置(用.T或者.transpose()都可以):
columns = df.to_numpy().T # 输出结果: # array([[1, 2, 3], # [4, 5, 6], # [7, 8, 9]])
这样你就可以通过columns[0]获取原DataFrame的A列数组,columns[1]获取B列,columns[2]获取C列,完全符合你的需求~
如果只需要转换特定列,比如只转A和C列,同样的逻辑:
specific_columns = df[['A', 'C']].to_numpy().T # 输出结果: # array([[1, 2, 3], # [7, 8, 9]])
补充说明一下:.T是NumPy数组的转置属性,和调用.transpose()方法效果完全一样,只是写法更简洁。之所以这个方法可行,是因为to_numpy()返回的数组形状是(行数, 列数),转置后就变成了(列数, 行数),正好对应你想要的“每一行对应原DataFrame一列”的结构。
内容的提问来源于stack exchange,提问作者lpnorm
相关产品推荐
相关产品推荐

