我有以下数据框:
>>> 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”?数据已经预先格式化,我不需要 pandas 来标记任何内容。
最佳答案
假设列表长度相等,您可以为 from_dict
指定 dtype=object
参数。 '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
关于python - 强制所有列都是 pandas 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900899/