到目前为止,我是用一串串的绳子,然后再拆开来做的。
print(df)
a b c z
0 0 0 0 "23,8,100"
1 1 1 1 "23,2,100"
2 2 2 2 "1,8,100"
3 3 3 3 "23,5,300"
4 4 4 4 "23,8,7"
# converting column to list
x_list = df["z"].tolist()
# splitting via list comprehension
[[float(x) for x in xstring.split(",")] for xstring in xlist]
但我想知道是否有更快的方法将一个小的 列表 [23,8,100]合并为一列,并接收到 列表 当在数据框架中调用索引时,返回(或者更好的是:将整个列作为列表调用)。
(列表中的元素数量取决于静态输入,所以当我有3个元素时,它总是3个元素的列表,但我也可以输入100,所以每个列表中的元素数量都是100。)
IIUC你要把字符串转换成列表 首先,去掉多余的 "1,8,... "和 "2,100"。"
报价 strip
然后将字符串分割成列表
df.z.str.strip('"').str.split(',')
0 [23, 8, 100]
1 [23, 2, 100]
2 [1, 8, 100]
3 [23, 5, 300]
4 [23, 8, 7]
Name: z, dtype: object
并使用 map
将字符串转换为 float
与 apply
df.z.str.strip('"').str.split(',').apply(lambda x:list(map(float,x)))
0 [23.0, 8.0, 100.0]
1 [23.0, 2.0, 100.0]
2 [1.0, 8.0, 100.0]
3 [23.0, 5.0, 300.0]
4 [23.0, 8.0, 7.0]
Name: z, dtype: object
或者您可以将
df.z = df.z.str.strip('"').str.split(',').apply(lambda x:list(map(float,x)))