将带有逗号千位分隔符的数据帧转换为空格分隔符 Pandas

如何解决将带有逗号千位分隔符的数据帧转换为空格分隔符 Pandas

我在 Pandas 中遇到格式问题。所以,我在 A DataFrame 中有一个 Column 用逗号分隔符计算数字,如 (200,000)。所以我想将其转换为 (200 000)。

使用替换函数的简单方法,但我也想将类型转换为整数。它不起作用,因为它们之间有空格。

最后,我只想做一个这样的降序排序值的排名:

ID 别墅 Price_nospace
3 和平 35000000
3 和平 35000000
2 罗莎 27000000
1 海滩 25000000
0 棕榈 22000000

如您所见,没有分隔符就不容易阅读价格。所以我想让价格更具可读性。但是当我有空格分隔符时,我无法转换为 Int。 如果我不转换为整数,我可以使用 sort_values 函数。所以我被卡住了。

感谢您的帮助。

解决方法

稍微修改样本输入以对输出中的值进行排序(降序)。

以下解决方案将按 Price_nospace 对数据帧进行排序(降序)并将 comma 替换为 space。但是 Price_nospace 在输出中将是 object 类型。

样本输入

Id  Villas  Price_nospace
0   3   Peace   220,000
1   3   Peace   350,000
2   2   Rosa    270,000
3   1   Beach   250,000
4   0   Palm    230,000

代码

df['Price_new'] = df['Price_nospace'].str.replace(',','',regex=True).astype(int)
df = df.sort_values(by='Price_new',ascending=False)
df['Price_nospace'] = df['Price_nospace'].str.replace(',' ',regex=True)
df = df.drop(columns='Price_new').reset_index(drop=True) ## reset_index,if required
df

输出

    Id  Villas  Price_nospace
0   3   Peace   350 000
1   2   Rosa    270 000
2   1   Beach   250 000
3   0   Palm    230 000
4   3   Peace   220 000

说明

引入了一个新列 Price_new 以将 Price_nospace 值转换为 int 并对值进行排序。
df 排序后,只需替换 comma with space for Price_nospace 并删除临时列 Price_new

,

另一种选择是改变数据的显示方式,但不影响基础类型。

在将 str 价格转换为 float 价格后使用 pd.options.display.float_format

import pandas as pd


def my_float_format(x):
    '''
    Number formatting with custom thousands separator
    '''
    return f'{x:,.0f}'.replace(',' ')


# set display float_format
pd.options.display.float_format = my_float_format

df = pd.DataFrame({
    'Id': [3,3,2,1,0],'Villas': ['Peace','Peace','Rosa','Beach','Palm'],'Price_nospace': ['35,000,000','35,'27,'25,'22,000']
})

# Convert str prices to float
df['Price_nospace'] = (
    df['Price_nospace'].str.replace(',regex=True).astype(float)
)

Output

print(df)

   Id Villas  Price_nospace
0   3  Peace     35 000 000
1   3  Peace     35 000 000
2   2   Rosa     27 000 000
3   1  Beach     25 000 000
4   0   Palm     22 000 000
print(df.dtypes)

Id                 int64
Villas            object
Price_nospace    float64
dtype: object

由于类型是 float64,因此任何数字运算都将正常运行。


同样的 my_float_format 函数也可以用于导出:

df.to_csv(float_format=my_float_format)
,Id,Villas,Price_nospace
0,Peace,35 000 000
1,35 000 000
2,Rosa,27 000 000
3,Beach,25 000 000
4,Palm,22 000 000

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res