python - 如何将多个值填充到熊猫数据框中的一列中?(不使用字符串)Python
问题描述
到目前为止,我设法通过使用字符串并稍后将其拆分来做到这一点。
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 您想将字符串转换为列表
首先,使用删除多余的"
引号,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
withapply
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)))
推荐阅读
- python - defaultdict(lambda: set()) 如何添加
- mysql - 使用条件批量更新 MySQL 值
- javascript - 检索 Safari 扩展程序创建的数据
- ios - 消息“[ProcessSuspension] 0x282ead7c0-processassertion () Unable to acquire assertion for process with PID 0”
- ios - 创建静态下拉菜单
- linux - 如何在 centOS 7 上找到 binutils 的安装位置?
- c++ - 如何以二进制格式将 C++ 对象的 std::vector 保存到磁盘?
- javascript - 将 URL 搜索参数解析为具有编码 url 的对象数组
- sql - SQL:使用 LAG 撤消 YTD cum sum,然后使用 group by 重新聚合
- bash - 无法使用 sudo 创建目录