我有以下数据框:
>>> 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”?数据已经预先格式化,因此我不需要熊猫来标记任何内容。
答案 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)