当前位置: 首页 > 面试题库 >

在类型为float或特定类型的Pandas中查找数据框的所有列?

越涵衍
2023-03-14
问题内容

我有一个数据框df,其中有一些类型为float64的列,而其他的则是对象。由于混合性质,我不能使用

df.fillna('unknown') #getting error "ValueError: could not convert string to float:"

因为错误发生在类型为float64的列上(这是一个令人误解的错误消息!)

所以我希望我可以做类似的事情

for col in df.columns[<dtype == object>]:
    df[col] = df[col].fillna("unknown")

所以我的问题是,是否可以在df.columns中使用任何此类过滤器表达式?

我猜想也可以做些不太优雅的事情:

 for col in df.columns:
        if (df[col].dtype == dtype('O')): # for object type
            df[col] = df[col].fillna('') 
            # still puzzled, only empty string works as replacement, 'unknown' would not work for certain value leading to error of "ValueError: Error parsing datetime string "unknown" at position 0"

我也想知道为什么在上面的代码中用’unknown’替换’‘的代码对于某些单元格有效,但由于单元格错误而失败,错误为“
ValueError:解析日期时间字符串“ unknown”在位置0时出错”

非常感谢!


问题答案:

您可以使用dtypes属性查看所有列的dtype:

In [11]: df = pd.DataFrame([[1, 'a', 2.]])

In [12]: df
Out[12]: 
   0  1  2
0  1  a  2

In [13]: df.dtypes
Out[13]: 
0      int64
1     object
2    float64
dtype: object

In [14]: df.dtypes == object
Out[14]: 
0    False
1     True
2    False
dtype: bool

要访问对象列:

In [15]: df.loc[:, df.dtypes == object]
Out[15]: 
   1
0  a

我认为使用起来最明确(我 不确定 inplace是否可以在这里使用):

In [16]: df.loc[:, df.dtypes == object] = df.loc[:, df.dtypes == object].fillna('')

话虽如此,我建议您对缺失的数据使用NaN。



 类似资料:
  • 问题内容: 也许这是一个愚蠢的问题,但是有没有办法找到所有返回特定类型的函数(在标准库或GOPATH中)? 例如,有许多函数使用io.Writer作为参数。现在,我想知道如何创建io.Writer,并且有很多方法可以做到这一点。但是,如何能轻松地找到所有方法而又无需猜测软件包并仔细查看所有方法以找到返回io.Writer(或我追随的其他任何类型)的方法? 编辑: 我应该扩展我的问题,以查找实现特定

  • 这是我的OWL文件的一部分: 如何仅从属性中获取

  • 问题内容: float数据类型是单精度32位IEEE 754浮点,double数据类型是双精度64位IEEE 754浮点。 这是什么意思?我什么时候应该使用float而不是double? 问题答案: 总结一下: float用32位表示,带有1个符号位,8位指数和23位有效数(或从科学记号中得出的结果:2.33728 * 10 12; 33728为有效数)。 double 用64位表示,带有1个符号

  • float数据类型是单精度32位IEEE 754浮点,而double数据类型是双精度64位IEEE 754浮点。 这是什么意思?什么时候应该使用float而不是double或者相反呢?

  • 我有一个多构建Java项目正在用Gradle构建。 为了隐藏非法反射访问警告,我想在几个项目中找到JavaExec和Test任务,并提供所需的JVM参数。而不是将这些添加到每个项目中,我想将其应用于根中的所有项目build.gradle. 如何在所有项目中找到特定类型的特定任务? 我最初尝试使用withType,但是我想消除重复JavaExec和Test任务类型。见下文: 尝试#1

  • 问题内容: 我想在pandas数据框列中找到一个特定的模式,并返回相应的索引值以对数据框进行子集化。 这是带有可能模式的示例数据框: 生成数据框的代码段: 数据框: 下面,感兴趣的格局发生的日期来,这就是我想要结束了一下: 所需的输出: 如果同一模式多次出现,我希望以相同的方式对数据帧进行子集化,并计算该模式出现的次数,但是只要我将第一步弄清楚,我希望这会更直接。 感谢您的任何建议! 问题答案:

  • 问题内容: 我想将表示为列表列表的表转换为。作为一个极其简化的示例: 将列转换为适当类型的最佳方法是什么(在这种情况下,将列2和3转换为浮点数)?有没有一种方法可以在转换为DataFrame时指定类型?还是先创建DataFrame然后遍历各列以更改各列的类型更好?理想情况下,我想以动态方式执行此操作,因为可以有数百个列,并且我不想确切指定哪些列属于哪种类型。我可以保证的是,每一列都包含相同类型的值

  • 问题内容: 我正在开发一个应用程序(Quartz调度程序),其中有一个作业类负责实际执行工作,我们需要在Quartz调度程序中创建触发器时告知/传递作业类的名称。 我想为所有想使用该API的人提供一个扩展点(除了我将作为API的一部分提供的一些通用作业之外)。这个想法是创建一个(标记)接口,如果有人想将其类声明为调度程序作业类,那么他们要做的就是(声明)实现该接口。 我不确定如何找到合约之后的类(