【问题标题】:Python Isinstance Function exception handling errorPython Isinstance 函数异常处理错误
【发布时间】:2021-07-28 22:14:08
【问题描述】:

我正在使用下面的 isinstance() 函数来检查数据框列上的单元格是否为字符串。但是,我收到以下错误:

密钥错误:13900

在处理上述异常的过程中,又发生了一个异常:

代码如下。


df1= pd.read_csv('FED001_072321_07.CSV', header=0, index_col = None)
import os
g=os.listdir(os.getcwd())
for file in g:
    df= pd.read_csv(file, header=0, index_col = None)
    ipt=df.iloc[:,-2]
    ipt=ipt.dropna()
    for i in ipt:
            if isinstance(ipt[i], String)==False:
                sum=sum+ipt[i] 
                j=j+1

【问题讨论】:

  • 这可能是解决问题的错误方法。你真正想做什么?
  • 该列混合了字符串和数值。我想浏览该列,只提取数值并忽略字符串。
  • 听起来不错。所以你想取每个数据帧倒数第二列中所有数值的总和?
  • 是的!没错
  • 我已经相应地更新了我的答案。听起来您的 CSV 文件的数据模型可能会干扰更优雅的解决方案。

标签: python python-3.x pandas dataframe


【解决方案1】:

虽然我不确定你的目标是什么,但这可能会达到你想要的效果。

import os

import numpy as np
import pandas as pd

df1 = pd.read_csv('FED001_072321_07.CSV', header=0, index_col=None)
sum_ = 0

for file in os.listdir(os.getcwd()):
    df = pd.read_csv(file, header=0, index_col=None)
    sum_ += df.iloc[:, -2].dropna().where(np.isreal).astype(float).sum()

从它的声音来看,您的某些列在同一列中有不同的类型。如果每一列 df.iloc[:, -2] 都可以假定为全浮点数,则大部分逻辑都是不必要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多