提问者:小点点

熊猫,读取excel列值,但当该列中没有更多值时停止


我想从带有熊猫的excel工作表中导入一些值。

使用Pandas读取值时,我希望逐列读取,但当每列的行为空时,停止读取值。

因为在我的excel文件中,不同的列有不同的行数,所以我现在得到的是带有一些数字的数组,但随后用“nan”值填充,直到它们达到最大数(即excel列中行数最多的行数)

我希望解释不要太混乱。

代码片段不是一个很好的例子,它是不可复制的,但希望能帮助理解我正在尝试做什么。

在代码片段的第二部分(下面是#删除nan),我试图在已经导入“nan”后删除它们,但这也不起作用,我得到了这个错误:ufunc'isnan'不支持输入类型,并且根据铸造规则“安全”,输入不能安全地强制转换为任何支持的类型。np.isfinite也是如此

df = pandas.read_excel(file_name)

for i in range(number_of_average_points):

    #Reading column values (includes nan)
    force_excel_col = df[df.columns[index_force]].values[13:]
    acceleration1_excel_col = df[df.columns[index_acceleration1]].values[13:]
    acceleration2_excel_col = df[df.columns[index_acceleration2]].values[13:]

    #Trying to remove nan
    force.append(force_excel_col[np.logical_not(np.isnan(force_excel_col))])
    acceleration1.append(acceleration1_excel_col[np.isfinite(acceleration1_excel_col)])
    acceleration2.append(acceleration1_excel_col[np.isfinite(acceleration2_excel_col)])

共1个答案

匿名用户

这可能是可行的,但它不是有效的和糟糕的做法。在一个数据帧中拥有NaN数据是Pandas(通常)中任何数据分析的常规部分。

我鼓励你阅读整个excel文件。然后,要删除所有的NaN,您可以使用Pandas内置的dropna()方法替换它们(例如,用0替换),甚至删除数据框中包含NaN值的所有行。如果你有兴趣,很高兴扩展这个。