如何在Python中向字典添加数据类型对象

时间:2019-06-28 09:59:18

标签: python pandas dictionary

我试图将数据类型对象动态添加到字典中,以便在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'>
}

有什么方法可以将数据类型对象显式放置在字典中?

2 个答案:

答案 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'}