强制所有列为大熊猫中的字符串

时间:2018-12-23 03:01:42

标签: python pandas

我有以下数据框:

>>> data = {'col_1': ['1','2','3'], 'col_2': ['a', 'b', 'c', 'd']}
>>> df=pd.DataFrame.from_dict(data) # <== I want to modify this statement

>>> df.dtypes
col_1     int64
col_2    object
dtype: object

请注意,col_1被推断为int64列。有没有一种简单的方法可以为我拥有的每一列执行“ forceType = object”?数据已经预先格式化,因此我不需要熊猫来标记任何内容。

2 个答案:

答案 0 :(得分:1)

假设列表的长度相等,则可以为dtype=object指定一个from_dict参数。 'object'指定在列上不进行转换,因此它们将按原样加载。

data = {'col_1': ['1','2','3'], 'col_2': ['a', 'b', 'c']}
df = pd.DataFrame.from_dict(data, dtype=object)

df
  col_1 col_2
0     1     a
1     2     b
2     3     c

df.dtypes

col_1    object
col_2    object
dtype: object

如果大小不一的列表将成为问题,则可以使用'index'方向以相同的方式加载并转置结果:

data = {'col_1': ['1','2','3'], 'col_2': ['a', 'b', 'c', 'd']}
df = pd.DataFrame.from_dict(data, orient='index', dtype=object).T
df

  col_1 col_2
0     1     a
1     2     b
2     3     c
3  None     d

df.dtypes

col_1    object
col_2    object
dtype: object

答案 1 :(得分:0)

为什么不呢?

df=df.astype(str)

现在df的列将全部为object类型。

更新

df=df.apply(str)