from_csv选择一个'04'作为其中一个值并将其转换为字符串。如何确保拾取的所有列都是字符串?我想避免处理单个列,因为有114列,我不希望在列受影响时通过分析练习。
答案 0 :(得分:3)
如果您希望所有列都为str
,请将dtype=str
传递给read_csv
:
df = pd.read_csv(file_path, dtype=str)
将保留任何前导零
示例:
In [54]:
t="""a,b
001,230
01,003"""
df = pd.read_csv(io.StringIO(t), dtype=str)
df
Out[54]:
a b
0 001 230
1 01 003
此处dtypes将列为object
,这是str
的正确dtype:
In [55]:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
a 2 non-null object
b 2 non-null object
dtypes: object(2)
memory usage: 112.0+ bytes
答案 1 :(得分:1)
如果只有有限数量的列可以读作字符串:
而不是from_csv使用read_csv
(here the documentation)并设置
dtype={ 'your_column_name':np.str_ }
如果所有数据都应被视为字符串:
编辑:正如评论中所指出的,建议的解决方案会从数据中删除尾随零。 EdChum's answer按要求处理此案例。
只需在使用 df.asType(np.str_)
读取数据后转换数据。您也可以通过将所有名称放在列表中然后执行df[list_of_column_names] = df[list_of_column_names].asType(np.str_)