为什么Pandas df.values将元组转换为字符串

时间:2018-06-27 07:30:02

标签: python pandas

我有一个具有4000多个数据的csv,其中每个单元格包含一个元组,该元组具有特定的协调性。我想将其转换为numpy数组以使用。在调用test("cache, getStorageLevel") { // test to see if getStorageLevel returns correct value after caching withSpark { sc => val verts = sc.parallelize(List((0L, 0), (1L, 1), (1L, 2), (2L, 3), (2L, 3), (2L, 3))) val edges = EdgeRDD.fromEdges(sc.parallelize(List.empty[Edge[Int]])) assert(edges.getStorageLevel == StorageLevel.NONE) edges.cache() assert(edges.getStorageLevel == StorageLevel.MEMORY_ONLY) } } 之前,我使用熊猫将其转换为DataFrame。但是,在调用df.values之后,该元组将变为字符串df.values。有可能防止这种情况发生吗?谢谢。

"(x,y)"

3 个答案:

答案 0 :(得分:1)

我认为问题是csv总是将元组作为字符串。

因此需要将它们转换:

import ast

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

或者如果所有列都是元组:

df = df.applymap(ast.literal_eval)

答案 1 :(得分:0)

似乎您是从本地路径读取文件的? 我的答案是使用eval更改字符串:

df.apply(lambda x:x.apply(eval))

答案 2 :(得分:0)

在读取csv之后更改数据类型的另一种方法:

df['col'].apply(tuple)