如何阅读一本词典'进入大熊猫

时间:2017-06-08 22:46:12

标签: python pandas

我有一个csv文件,其列的类型是字典(列' b'在下面的示例中)。但 df 中的 b 是字符串类型,即使我将其定义为字典类型。我没有找到这个问题的解决方案。有什么建议吗?

a = pd.DataFrame({'a': [1,2,3], 'b':[{'a':3, 'haha':4}, {'c':3}, {'d':4}]})
a.to_csv('tmp.csv', index=None)
df = pd.read_csv('tmp.csv', dtype={'b':dict})

2 个答案:

答案 0 :(得分:2)

pandas中没有字典类型。因此,如果您需要普通的Python对象,则应指定object

df = pd.read_csv('tmp.csv', dtype={'b':object})

这将包含字符串,因为pandas不知道字典是什么。如果你想再次使用词典,你可以试着" eval"他们使用ast.literal_eval(安全字符串评估):

df['b'] = df['b'].apply(ast.literal_eval)

print(df['b'][0]['a'])  # 3

如果您确信自己从未在不受信任的csv上运行此操作,那么您也可以使用eval。但是在你考虑我之前我会建议你只使用DataFrame和#34; native" pandas或NumPy类型(或DataFrame方法中的DataFrame)。最好尽量避免使用object dtypes。

答案 1 :(得分:2)

我想知道你的CSV列是否真的是一个Python dict列,或者更确切地说是JSON。如果是JSON,您可以将该列读作dtype=str,然后使用该列上的json_normalize()将其分解为多个列。假设列包含有效的JSON,这是一种有效的解决方案。