首页 > 编程问答 >在 DataFrame 内的数据类型之间切换

在 DataFrame 内的数据类型之间切换

时间:2024-07-20 17:41:58浏览次数:10  
标签:python python-polars

我试图搜索是否有一种方法可以轻松更改带有数字的字符串的数据类型。例如,我面临的问题如下:

df = pl.DataFrame({"foo": 
    ["100CT pen", "pencils 250CT", "what 125CT soever", "this is a thing"]}
)

我可以提取并创建一个名为 {"bar": ["100", "250", "125", ""]} 的新列。但后来我找不到一个方便的函数来将此列转换为 Int64 或 float dtypes,以便结果是 [100, 250, 125, null]

而且,反之亦然。有时,有一个方便的函数将 [100, 250, 125, 0] 列转换为 ["100", "250", "125", "0"] 会很有用。它是已经存在的东西吗?


当然可以!以下是如何使用 Polars 实现这一点:

1. 从字符串中提取数字并转换为 Int64/Float64:

import polars as pl

df = pl.DataFrame({"foo": ["100CT pen", "pencils 250CT", "what 125CT soever", "this is a thing"]})

df = df.with_columns(
    pl.col("foo").str.extract(r"(\d+)").cast(pl.Int64).alias("bar")
)

print(df)

此代码将执行以下操作:

  • str.extract(r"(\d+)") : 此操作使用正则表达式 r"(\d+)" 从 "foo" 列中提取第一个匹配的数字字符串。 \d+ 匹配一个或多个数字。
  • .cast(pl.Int64) : 这会将提取的字符串值转换为 Int64 数据类型。如果需要 Float64,请使用 pl.Float64

2. 将数字列转换为字符串列:

df = df.with_columns(pl.col("bar").cast(pl.Utf8).alias("bar_str"))

print(df)

此代码执行以下操作:

  • .cast(pl.Utf8) : 这会将 "bar" 列(包含数字)转换为字符串数据类型(Utf8)。

汇总:

可以组合这些操作以实现的目标:

df = pl.DataFrame({"foo": ["100CT pen", "pencils 250CT", "what 125CT soever", "this is a thing"]})

# 提取数字并转换为整数
df = df.with_columns(
    pl.col("foo").str.extract(r"(\d+)").cast(pl.Int64).alias("bar")
)

# 可选:将整数列转换回字符串
df = df.with_columns(pl.col("bar").cast(pl.Utf8).alias("bar_str"))

print(df)

这将为提供一个包含原始 "foo" 列、提取的数字 "bar" 列以及 "bar" 的字符串表示形式的 "bar_str" 列的数据帧。

标签:python,python-polars
From: 71790235

相关文章

  • 在pyspark(python)中将json字符串扩展到多列
    我需要将Json对象(b列)扩展到多列。从此表中,A列B列id1[{a:1,b:'letter1'}]id2[{a:1,b:'letter2',c:3,d:4}]对......
  • python实现文件的读写
    python实现文件的读写路径的书写:open("E:\\ai_03\\code\\ai_03_python\\day07\\data.txt")#两个斜杠open(r"E:\ai_03\code\ai_03_python\day07\data.txt","w",encoding="utf8")#建议使用读文件读文件的格式要以读文件的模式打开一个文件对象,使用Python......
  • python模块化设计
    在Python中,模块化是将代码分解为独立的功能块,并通过导入和使用这些功能块来实现代码复用和组织的一种方式。模块化的编程风格使得代码更易于维护、扩展和测试。以下是Python实现模块化的一些常用方法:使用import语句导入模块:可以使用import语句导入其他Python文件(.py文件)作为......
  • 5分钟解锁python多线程
    以下是一个使用Python多线程的简单示例代码:importthreadingdefprint_numbers():foriinrange(1,6):print(i)defprint_letters():forletterin['A','B','C','D','E']:print(letter)if__nam......
  • 看过来!看过来!python九大数据类型大整合!
    目录一、Int(整型)二、Float(浮点型)三、Bool(布尔类型)四、Str(字符串)(1)拼接:(2)格式化:(3)查找和替换:(4)分割和连接:(5)大小写转换:(6)去除空白字符:五、None(空值)初始化变量作为函数的返回值:在条件语句中检查:六、List(列表)创建List访问List元素修改ListList的遍历七......
  • win系统 python 安装 osgeo库安装(最简单)
    Python osgeo库安装用法介绍安装使用osgeo库,本质是安装gdal一、下载对应python版本压缩包下载地址在结尾二、解压压缩包在解压之后的文件夹当中,找到这两个文件夹三、复制文件夹到python安装目录当中如python环境文件夹路径为D:\Local\Programs\miniconda3\envs\py31......
  • 【Python】使用库 -- 详解
    库就是别人已经写好了的代码,可以让我们直接拿来用。一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的“生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在实际开发中,也并非所有的代码都自己手写,而是要充分利......
  • python函数基础
    1.函数目的函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。函数可以封装一定的功能2.函数的定义函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。任何传入参数和自变量必须放在圆括号中间,圆括......
  • Python游戏开发实践项目-小恐龙躲避游戏——一个适合python新手练手的项目
    今天我们就来给大家演示下,用Python来自己做一个仿制的“小恐龙游戏”!废话不多说,让我们愉快地开始吧~相关模块:pygame模块;以及一些python自带的模块。环境搭建安装Python并添加到环境变量,pip安装需要的相关模块即可。先睹为快在终端运行如下命令即可:pythonGame7.py......
  • python 类
    构造方法init方法说明参数self->指的就是实例对象自己,返回值为空,实际是调用了new方法会生成一个实例对象实例化类的时候系统自动调用init方法进行创建(在调用init方法直接系统自动调用new方法创建对象)对象和初始化如果类没有init方法,系统会调用默认的;如果写了就相当于对init......