如何在pandas数据框架中的一列中填充多个值?(不使用字符串) Python

问题描述 投票:0回答:1

到目前为止,我是用一串串的绳子,然后再拆开来做的。

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。)

python arrays pandas list multiple-columns
1个回答
0
投票

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 将字符串转换为 floatapply

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)))
© www.soinside.com 2019 - 2024. All rights reserved.