在Pandas的数据框中,一些列是数字的,像浮动;一些是非数字的,像对象。我们希望删除那些数值列为NaN的行,但不删除那些非数值列为NaN的行。
例如,对于具有四列的df:a、B、C和D。a和C的数据类型为Object,B和D的数据类型为Float。
**A(Object) B(Float)C(Object) D(Float)**
Apple NaN String1 1.0
Orange 2.0 NaN 3.0
Banana 4.0 String2 5.0
NaN 1.0 String3 2.0
Pear NaN String4 3.0
Melon 2.0 String5 NaN
我们将只删除其中一些数字列(浮点数)为NaN的行,而不应该删除其中一些非数字列(对象)为NaN的行。
最终结果如下:
**A(Object) B(Float)C(Object) D(Float)**
Orange 2.0 NaN 3.0
Banana 4.0 String2 5.0
NaN 1.0 String3 2.0
我的步骤是:
以下是代码:
df = penguins.dropna(0, how='any', subset=['B','D'])
但是如果数字列的数量非常大,这段代码将会非常长,有时几乎是不可能的。
那么,如何根据子集=[]中的数据类型选择这些列呢?
我正在考虑lambda和管道,但我不太确定。
谢谢!
试试这个:
df = df[df['B'].notna()]
df = df[df['D'].notna()]
您可以像这样使用选择类型
:
df[df.select_dtypes(include='number').notna().all(axis=1)]
输出:
A B C D
1 Orange 2.0 NaN 3.0
2 Banana 4.0 String2 5.0
3 NaN 1.0 String3 2.0
我想在指定的时间戳范围内从数据帧中选择行的子集。 下面是我所做的,但它似乎没有工作。我正在尝试选择发生在01/01/2019 01:00和01/01/2021 01:00之间的行子集。 非常感谢。
问题内容: 我有一个模块(db.py),它从不同的数据库类型(sqlite,mysql等)加载数据。该模块包含一个db_loader类和从其继承的子类(sqlite_loader,mysql_loader)。 使用的数据库类型在单独的params文件中, 用户如何找回正确的物体? 即我该怎么做: 我是在db.py模块中使用一种称为loader的方法,还是有一种更优雅的方式使类可以根据参数选择自己的
问题内容: 从pandas数据框中选择所有行的最简单方法是什么?谁的符号在整个表中恰好出现两次?例如,在下表中,我想选择在[‘b’,’e’]中带有sym的所有行,因为这些符号的value_counts等于2。 问题答案: 我认为您可以按列和值使用: 第二个解决方案使用与布尔索引: 并用最快的解决方案和:
主要内容:数值类型,日期和时间类型,字符串类型,二进制类型MySQL 提供了大量的数据类型,为了优化存储和提高数据库性能,在任何情况下都应该使用最精确的数据类型。 前面主要对 MySQL 中的数据类型及其基本特性进行了描述,包括它们能够存放的值的类型和占用空间等。本节主要讨论创建数据库表时如何选择数据类型。 可以说字符串类型是通用的数据类型,任何内容都可以保存在字符串中,数字和日期都可以表示成字符串形式。 但是也不能把所有的列都定义为字符串类
这不是一个重复的问题,但类似于 根据pandas中列中的值从数据帧中选择行
问题内容: 如果在表的一列中,我希望这些值是“是”,“否”或“可选”,那么我需要使用哪种数据类型? 问题答案: 少量: 占用1个字节,但是最多可以将8个BIT字段合并到SQL Server中的单个BYTE中。 存储以下两个值之一:1(表示true)和0(表示false),因此该列需要为可空值,以便NULL作为您的第三个值传递 CHAR(1) 需要1个字节 如果不区分大小写ASCII,则为26个字符