我对pandas相对较新,现在尝试将pandas DataFrame行转换为字符串列表。
它运行良好,但原始DataFrame中的字符串在列表中被奇怪地修改,因为有些人附加了" L"出于某种原因的角色。
非常感谢你的帮助..
S -> Aa | Bb
A -> aAb | ab
B -> aBbb | abb
事实上,我发现,附加L的数字是整数,对于它起作用的浮点数。
答案 0 :(得分:0)
DataFrame中的每一列都有一个与之关联的特定“类型”。
通常这通常意味着它们的类型为“string”,“int”或“float”。
现在,您的.tolist()调用会将该行转换为列表,但不一定会将所有值的类型更改为字符串。
在控制台中键入列表时,Python使用“repr”方法查找列表的字符串表示形式。这包括放入括号并在每个元素上调用“repr”。这与将值转换为字符串略有不同,这是使用“str”方法完成的。
你可以自己测试一下:
# For regular ints, repr and str do the same thing
a = 5
str(a) #'5'
repr(a) #'5'
# The L means it's a *long*, basically an int with a higher max-value
a = 5L
str(a) #'5'
repr(a) #'5L'
*注意,在Python 3中并非如此,所有整数都是自动“长”的,因此没有L,因为它是多余的。
所以,最后,如果你真的想将各种类型的列表(float,int,str,取决于每一列)转换为字符串,你可以使用这样的东西:
my_list = [str(x) for x in my_list]
但是,如果您打算使用这些数字进行一些处理,最好将它们保留为数字类型,而不是来回转换为字符串。