从csv文件读取数据帧并转换为Python类型

从csv文件读取数据帧并转换为Python类型,python,pandas,csv,Python,Pandas,Csv,我想阅读包含特定python类型元素(如数组、字典和numpy数组)的Pandas数据帧。我想阅读它,这样我就可以立即使用它们(现在它们被读取为字符串)。我该怎么做 我希望功能类似于,但希望有一种方法可以做到这一点,而不必在整个数据帧上循环 编辑:根据要求,一个最小的可复制示例 import pandas as pd import numpy as np output = pd.DataFrame() data = {'integer':1, 'list': [1,2,3], 'diction

我想阅读包含特定python类型元素(如数组、字典和numpy数组)的Pandas数据帧。我想阅读它,这样我就可以立即使用它们(现在它们被读取为字符串)。我该怎么做

我希望功能类似于,但希望有一种方法可以做到这一点,而不必在整个数据帧上循环

编辑:根据要求,一个最小的可复制示例

import pandas as pd
import numpy as np

output = pd.DataFrame()
data = {'integer':1, 'list': [1,2,3], 'dictionary':{}, 'np_arrar' = np.array([1,2,3]}
output = output.append({}, ignore_index=True)
    
filename = 'data.csv'
output.to_csv(filename)

input_data = pd.read_csv(filename, ???) # What to do here?

理想情况下,我想要一种不必手动输入数据类型的方法(不确定是否有这种方法)。

对于未来的人:对于简单的数据类型,可以使用
dtype
参数,如下所示

input_data = pd.read_csv(filename, dtype = {'integer':'int'})
但是,对于对象,这无法正常工作。然后可以使用
转换器
参数。这是一个函数字典,用于转换数据中的特定列。可以从
ast
使用函数
ast.literal\u eval

input_data = pd.read_csv(filename, converters= {'integer': ast.literal_eval, 'dictionary': ast.literal_eval, 'list': ast.literal_eval}
但是要小心,这不适用于numpy数组,因为您将遇到一个错误
SyntaxError:invalid syntax
,因为numpy数组存储时没有逗号,所以这是无效的Python语法。相反,您可以定义自己的函数

def string_to_numpyArray(x):
    return np.fromstring(x[1:-1],dtype = float, sep = ' ')
然后按如下方式使用它

input_data = pd.read_csv(filename, converters= {'integer': ast.literal_eval, 'dictionary': ast.literal_eval, 'list': ast.literal_eval, 'np_list':string_to_numpyArray}
希望这对某人有帮助


干杯

请提供一个。你试过什么,做过什么研究吗?您看过熊猫的文档了吗?例如,请阅读_csv。@AMC当然,谢谢您的更正。我尝试了使用dtype参数从注释中得到的建议。请查看
转换器
参数,
dtype
不适用于此。我得到
TypeError:数据类型“numpy.ndarray”不可理解
。好吧,你从这个错误中理解了什么?理想情况下,我想要一种不必手动输入数据类型的方法。这是如何工作的?顺便问一下,你的实际数据是什么样子的?@AMC来自熊猫文档中的函数Dict,用于转换某些列中的值。键可以是整数或列标签。这对我有什么帮助?