Pandas loc索引无法保留子数组数据类型的问题及需求
Pandas loc索引子Series保留特定数据类型的解决方法
原问题中,因为Series同时包含整数和字符串,整体 dtype 为 object。使用 s.loc[[0]] 提取子Series时,Pandas会继承原Series的 object dtype,即便子Series仅包含整数元素。而直接取单个元素 s.loc[0] 返回的是原始Python int对象,因此类型为int。
要让 s.loc[[0]] 返回int类型的Series,可以通过以下两种方式实现:
显式转换数据类型
提取子Series后,使用astype(int)强制转换 dtype:import pandas as pd s = pd.Series([1,2,"hi","bye"]) sub_series = s.loc[[0]].astype(int) print(sub_series) # 输出结果 dtype: int64 print(sub_series.dtype) # 输出: int64重新构造指定 dtype 的Series
提取单个元素的值,再用该值构造一个指定int dtype的新Series:import pandas as pd s = pd.Series([1,2,"hi","bye"]) sub_series = pd.Series([s.loc[0]], dtype=int) print(sub_series) # 输出结果 dtype: int64
注意:如果子Series中的元素可能存在非整数类型,建议先做类型校验,比如使用 pd.to_numeric 处理,避免转换报错。
内容的提问来源于stack exchange,提问作者LogZ
相关产品推荐
相关产品推荐

