当我使用9以上的数字时,从列表理解创建的NumPy数组的形状不正确。请帮助我更正它,并解释为什么会发生这种情况。请找到下面的代码
import pandas as pd
import numpy as np
sep_payment = pd.DataFrame({"Creditor":['Axis','RBL_CC','KOTAK_PL','KOTAK_CC','Cashe','SBI','HDFC_Jumbo','HDFC_CC','SCB','Tata Capital','Flex_Salary'],"Priority":[1,2,3,4,5,6,7,8,9,10,11],"Payment_Status":['Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending'],"Credit_Status":['Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending','Pending'],"Payment_Date":['-','-','-','-','-','-','-','-','-','-','-'],"Time Taken in Days":[2,5,5,2,5,2,5,5,5,5,2]})
# List comprehension Looped with range 9 NO ERRORS | Output (9, 6)
subb= sep_payment.iloc[1].to_string(index=False).split()
subb
subb2 = [sep_payment.iloc[i].to_string(index=False).split() for i in range(9)]
subb2
data= np.array(subb2)
print(data.shape)
# List comprehension Looped with range 10 ERROR in THE SHAPE printed | Output (10,)
subb= sep_payment.iloc[1].to_string(index=False).split()
subb
subb2 = [sep_payment.iloc[i].to_string(index=False).split() for i in range(10)]
subb2
data= np.array(subb2)
print(data.shape)
您面临的问题是由于bank
Tata Capital
行的数据中出现了空格在第1部分:
您的第一个代码是将这个字符串(对于行)分成6个部分,因为在6列中的任何标记之间都没有空格。这将产生一个(9,6)形状的numpy数组,如预期的那样是9行6列
第二部分:
然而,在第二部分中,由于
Tata Capital
中的空格,您将所有其他行分成6部分,但其中一行分成7部分。当您尝试将其转换为numpy数组时,它会按预期创建一个包含10行但包含1列的数组,因为此数组中的每个对象都是一个列表对象,并计为1项这是因为numpy中的
ndarray
需要每个轴具有相同的元素解决方案:
只需直接使用
df.to_numpy()
而不是您正在执行的获取numpy数组的操作相关问题 更多 >
编程相关推荐