Python 2.7 数据帧到字典:python

Python 2.7 数据帧到字典:python,python-2.7,pandas,Python 2.7,Pandas,所以,我有一个文件 F1.txt CDUS,CBSCS,CTRS,CTRS_ID 0,0,0.000000000375,056572 0,0,4.0746,0309044 0,0,0.6182,0971094 0,0,15.4834,075614 我想将列名及其数据类型插入字典,列名是键,列的相应数据类型是值 我的阅读声明必须是这样的: csv=pandas.read_csv('F2.txt',dtype={'CTRS_ID':str}) data = {'CDUS':'int64','C

所以,我有一个文件

F1.txt

CDUS,CBSCS,CTRS,CTRS_ID
0,0,0.000000000375,056572
0,0,4.0746,0309044
0,0,0.6182,0971094
0,0,15.4834,075614
我想将列名及其数据类型插入字典,列名是键,列的相应数据类型是值

我的阅读声明必须是这样的:

csv=pandas.read_csv('F2.txt',dtype={'CTRS_ID':str})
data = {'CDUS':'int64','CBSCS':'int64','CTRS':'float64','CTRS_ID':'str'}
我期待着这样的事情:

csv=pandas.read_csv('F2.txt',dtype={'CTRS_ID':str})
data = {'CDUS':'int64','CBSCS':'int64','CTRS':'float64','CTRS_ID':'str'}
有人能帮我吗。提前感谢

您可以使用查找每列的类型,然后使用将结果转换为字典。此外,如果需要该类型的字符串表示形式,可以将数据类型输出转换为字符串:

csv=pandas.read_csv('F2.txt',dtype={'CTRS_ID':str})
csv.dtypes.astype(str).to_dict()
它给出了输出:

{'CBSCS': 'int64', 'CDUS': 'int64', 'CTRS': 'float64', 'CTRS_ID': 'object'}
这实际上是正确的结果,因为熊猫将字符串视为对象。 我没有足够的专业知识来详细阐述这一点,但这里有一些参考资料:


“pandas不支持内部字符串类型(事实上它们总是转换为object)”[来自pandas maintainer@Jeff]

我喜欢这个答案-非常简洁,非常简单,不起作用。请检查此代码:
csv2=pandas.read_csv('F1.txt')dict1=csv2.dtypes.astypes(str)。to_dict()print dict1
这给出了输出:
{Ctr':'object','CDUS':'object',BOARD_ID':'object',CBSCS':'object}
我担心您的文件中可能会出现意外情况。我试图将您的示例输入保存到txt,使用pd.read\u csv导入它,并获得了预期的输出。我想说我的解决方案是可行的(因为它提供了一个包含列类型的字典),但您的数据并没有您期望的类型。我知道了问题所在。我把
dtype=str
放在我的read\u csv语句中。