如果之前已经建议过此功能,我们深表歉意。 许多 IO 函数(例如read_csv
)允许使用字典轻松指定每列的格式。 据我了解,这不是
可以使用常规数据框构建,例如:
df = pd.DataFrame(data=data, columns=columns, dtypes={'colname1': str, 'colname2': np.int})
更好的是,如果可以使用类似的构造更改数据框列的dtypes
那就太好了,例如:
df.change_types({'colname1': str, 'colname2': np.int})
已经有这样的计划了吗?
看#9133 和#4464 没那么难
想试一试吗?
这种方式实际上有效:
data_df = data_df.astype( dtype = {"wheel_number":"int64", "car_name":"object","minutes_spent":"float64"})
read_csv( csvFile, dtype={..} )
和df.astpye(dtype={..} )
之间的一个区别:
在 read_csv 的情况下,如果提供的 dict 包含更多不在 csv 中的列,则可以正常忽略它们。 在astype()
的情况下,如果定义的所有列都不存在于数据中,则会出错。
它应该更像 read_csv。 因为我们可以有可能有一些列而不是其他列的传入字典。 现在这是我必须做的解决方法:
df = pd.DataFrame( incoming_data )
gtfs_dtypes = { ... } # my master dtypes dict, having all possible column names
gtfs_dtypes_specific = { x:gtfs_dtypes.get(x,'str') for x in df.columns.tolist() }
df = df.astype(dtype=gtfs_dtypes_specific)
最有用的评论
这种方式实际上有效:
data_df = data_df.astype( dtype = {"wheel_number":"int64", "car_name":"object","minutes_spent":"float64"})