我从. csv文件读取数据到熊猫数据框如下。对于其中一个列,即id
,我想将列类型指定为int
。问题是id
系列缺少/空值。
当我在读取.csv时尝试将id
列强制转换为整数时,我得到:
df= pd.read_csv("data.csv", dtype={'id': int})
error: Integer column has NA values
或者,在阅读以下内容后,我尝试转换列类型,但这次我得到:
df= pd.read_csv("data.csv")
df[['id']] = df[['id']].astype(int)
error: Cannot convert NA to integer
我如何处理这个问题?
我的用例是在加载到DB表之前对数据进行扫描:
df[col] = df[col].fillna(-1)
df[col] = df[col].astype(int)
df[col] = df[col].astype(str)
df[col] = df[col].replace('-1', np.nan)
删除NAN,转换为int,转换为str,然后重新插入NAN。
这并不漂亮,但它完成了任务!
在0.24版本中,熊猫获得了持有缺失值的整数dtype的能力。
可为空的整数数据类型。
熊猫可以使用数组来表示可能缺少值的整数数据。IntegerArray
。这是在pandas中实现的扩展类型。它不是整数的默认数据类型,不会被推断;必须将数据类型显式传递到array()
或Series
:
arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
pd.Series(arr)
0 1
1 2
2 NaN
dtype: Int64
要将列转换为可为空的整数,请使用:
df['myCol'] = df['myCol'].astype('Int64')
整数列中缺乏NaN代表是熊猫“明白了”。
通常的解决方法是简单地使用浮动。
问题内容: 我有一个名为数据帧作为 我想将列转换为布尔值(当状态为“已交付”而状态为“未交付”时),但是如果状态既不是“未交付”也不是“未交付”,则应将其视为“类似”。 我想用一个字典 所以我可以轻松地添加其他字符串,可以将其视为或。 问题答案: 您可以使用:
问题内容: 我在以字符串格式导入的pandas DataFrame中有一个字段。它应该是日期时间变量。如何将其转换为datetime列,然后根据日期进行过滤。 例: DataFrame Name: raw_data Column Name: Mycol Value Format in Column: ‘05SEP2014:00:00:00.000’ 问题答案: 使用该函数,指定一种格式以匹配您的数
我有一个数据框,其中一列包含一个列表。 输出应如下所示: 我已经尝试了我在这里找到的这些选项,但不起作用。
问题内容: 我有一个二维的numpy数组。此数组中的一些值为。我想使用此数组执行某些操作。例如考虑数组: 我试图每次取一行,以相反的顺序对其进行排序,以从行中获取最多3个值并取其平均值。我试过的代码是: 这不适用于包含的行。我的问题是,是否有一种快速的方法可以将2D numpy数组中的所有值都转换为零,以便我在排序和其他尝试做的事情上没有问题。 问题答案: 这应该工作: 在上述情况下,where_
所以我的数据集有一些n个日期的位置信息。问题是每个日期实际上是不同的列标题。例如CSV看起来像 我想让它看起来像 我的问题是我不知道该列中有多少个日期(尽管我知道它们总是在name之后开始)
问题内容: 我需要将列表转换为一列熊猫数据框 当前列表(len = 3): 所需的熊猫DF(形状= 3,): 请注意,这些数字代表上述“必需熊猫” DF中的索引。 问题答案: 采用: 谢谢DYZ: