我试图将数据类型对象动态添加到字典中,以便在pd.read_csv函数中指定“ dtype”参数。
问题在于,仅将'key':str 或'key':float 传递到dict.update()不会保留数据类型对象,并且没有任何效果dtype参数上。
我尝试了以下操作:
for column in list_of_columns:
dict.update({column : str})
我希望看到类似的东西
{
'a' : str,
'b' : str,
'c' : str
}
但是它产生:
{
'a' : <class 'str'>,
'b' : <class 'str'>,
'c' : <class 'str'>
}
有什么方法可以将数据类型对象显式放置在字典中?
答案 0 :(得分:0)
您可以使用'O'
将列指定为str
(或Object
项中的pandas
):
import pandas as pd
from io import StringIO
txt = """col1 col2
1 11
2 22
3 33
"""
df = pd.read_csv(StringIO(txt), sep = "\s+", dtype={'col1': 'O', 'col2': int})
输出:
print(df)
col1 col2
0 1 11
1 2 22
2 3 33
df.dtypes
col1 object
col2 int64
dtype: object
df['col1'].apply(lambda x:isinstance(x, str))
0 True
1 True
2 True
Name: col1, dtype: bool
答案 1 :(得分:0)
__name__
类的属性?即type(x).__name__
将为您提供班级名称,我想这就是您想要的。
list_of_columns = ["a","b","c","d",1,1.1]
my_dict = {}
for column in list_of_columns:
my_dict[column] = type(column).__name__ #or column.__class__.__name__
print(my_dict)
O / P:
{'a': 'str', 'b': 'str', 'c': 'str', 'd': 'str', 1: 'int', 1.1: 'float'}