我已完成以下操作:
y = df['C']
,其中df
是一个数据帧。
y.shape
返回(m,)
,但我希望它采用(m,1)
的形式,即(m,n)
的形式。
我该怎么做?
我正在使用numpy库。我尝试过:y = df.C.values
。但结果是一样的。
答案 0 :(得分:1)
当您访问DataFrame的列时,您正在获取一维#rows大小的矢量。如果您希望每个元素都具有第二维1,那么您需要[1, 2, 3, 4]
而不是[[1], [2], [3], [4]]
,请将其转换为具有.values
属性的NumPy ndarray,然后将其调整为大小{ {1}}。
(-1, 1)
使用df = pd.DataFrame([1,2,3,4], columns=['C'])
col_c_1 = df['C'].values # Shape (4,)
col_c_2 = col_c_1.reshape(-1, 1) # Shape (4, 1)
是要自动填充第一个尺寸。
答案 1 :(得分:1)
您只需要重塑。
import numpy as np
import pandas as pd
df=pd.DataFrame([[1,2],[1,2],[1,2]], columns=['A','B'])
print(df['B'].shape)
new_B=df.B.values.reshape((len(df),1))
print(new_B.shape)
您会得到:
(3,)
(3, 1)
答案 2 :(得分:0)
由于(m,1)和(m,)相同,因此结果很明显,因为一列向量可以用一个维度表示为要获取的输出。
>>> import numpy as np
>>> a=[1,2,3,4,5]
>>> s=np.array(a)
>>> s
array([1, 2, 3, 4, 5])
>>> s.shape
(5,)