Python Dataframe - 在加载from_csv时将数据保持为字符串

时间:2017-03-07 15:48:56

标签: python pandas dataframe import-from-csv

from_csv选择一个'04'作为其中一个值并将其转换为字符串。如何确保拾取的所有列都是字符串?我想避免处理单个列,因为有114列,我不希望在列受影响时通过分析练习。

2 个答案:

答案 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_csvhere 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_)

来转换一组列(其中您仍然需要名称)