是否有更有说服力/更有效的方式来执行以下操作。使用pd.read函数我导入了很多文件。对于大多数这些数据框中的所有数据类型都希望是一种类型即对象,但是有限数量将是不同的类型,即float64或datetime。有没有办法导入除指定之外的所有对象。目前我正在接近如下;
df = pd.read_csv('filepath', dtype=object)
然后;
df['column_with_easting&northing'] = pd.to_numeric(df['column_with_easting&northing'])
df['column_with_dd-mm-yyyy] = pd.to_datetime(df['column_with_column_with_dd-mm-yyyy'])
我想知道我能做的事情就像所有列都是对象,除了日期和数字。如果我使用
df = df = pd.read_csv(StringIO(data), dtype={'column_with_dd-mm-yyyy': object, 'column_with_easting&northing': np.float64})
然后,当我知道数据是对象时,pandas会尝试推断剩余的列类型,从而为我提供了对象和浮点数的混合。
答案 0 :(得分:0)
考虑在列范围内使用date_parser
和converters
(read_csv的参数)的组合。下面的示例使用csv,其中前四列是 dd-mmm-yyyy 格式的日期,最后3列是字符串。记录范围允许每隔一列进行步进:range(0,4,2)
dateparse = lambda x: pd.datetime.strptime(x, '%d-%b-%Y')
df = pd.read_csv('data.csv',
parse_dates=list(range(4)), date_parser=dateparse,
converters={i:str for i in range(4,7)})