python - 使用 Python 从数据框中用逗号替换点
问题描述
我有一个数据框,例如 df :
我正在尝试用逗号替换点,以便能够在 excel 中进行计算。
我用了 :
df = df.stack().str.replace('.', ',').unstack()
或者
df = df.apply(lambda x: x.str.replace('.', ','))
结果 :
没有任何变化,但我在执行结束时收到他的警告,没有错误:
FutureWarning:正则表达式的默认值将在未来版本中从 True 更改为 False。此外,当 regex=True 时,单字符正则表达式不会被视为文字字符串。
查看我所拥有的:
预期成绩 :
感谢@Pythonista 匿名更新问题以获取更多信息:
print(df.dtypes)
返回:
Date object
Open object
High object
Low object
Close object
Adj Close object
Volume object
dtype: object
我正在使用 to_excel 方法提取数据:
df.to_excel()
我不是在 .csv 文件中导出数据框,而是在 .xlsx 文件中导出
解决方案
数据框来自哪里 - 它是如何生成的?它是从 CSV 文件导入的吗?
如果您将代码应用于字符串列,您的代码就可以工作,只要您记得做
df = df.apply()
而不只是df.apply()
,例如:
import pandas as pd
df = pd.DataFrame()
df['a'] =['some . text', 'some . other . text']
df = df.apply(lambda x: x.str.replace('.', ','))
print(df)
但是,您尝试使用数字而不是字符串来执行此操作。 准确地说,另一个问题是:你的数据框的 dtypes 是什么?如果你输入
df.dtypes
输出是什么?
我想你的列是数字而不是字符串,对吧?毕竟,如果它们是数字,它们应该这样存储在您的数据框中。
下一个问题:您如何将此表导出到 Excel?
如果您要保存 csv 文件,pandas 的to_csv()
方法有一个decimal
参数,可让您指定小数点的分隔符(通常在英语世界中为点,在欧洲大陆的许多国家中为逗号)。查找语法。
如果您使用 to_excel() 方法,则无关紧要,因为 Excel 应在内部将其视为数字,以及如何显示它(无论是用点还是逗号作为小数分隔符)通常取决于您在电脑。
请说明您如何导出数据以及在 Excel 中打开数据时会发生什么:Excel 是否将其视为字符串?或者作为数字,但您希望看到不同的小数分隔符?
还可以在这里查看如何在 Excel 中更改小数点分隔符:https ://www.officetooltips.com/excel_2016/tips/change_the_decimal_point_to_a_comma_or_vice_versa.html
更新
OP,您还没有解释数据框的来源。您是否从外部来源导入它?您自己创建/计算它吗?列是对象的事实使我认为它们要么存储为字符串,要么有些行是数字的,有些则不是。
如果您尝试将列转换为浮点数会发生什么?
df['Open'] = df['Open'].astype('float64')
如果整个列应该是数字但不是,那么首先清理您的数据。
第二个问题:当你使用 Excel 打开你刚刚创建的文件时会发生什么?Excel 显示逗号,但 Excel 使用什么字符分隔小数取决于 Windows/Mac/Excel 设置,而不取决于 pandas 如何创建文件。您是否尝试过我上面提供的链接,您可以更改 Excel 显示小数的方式吗?此外,Excel 是否将这些数字视为数字或字符串?
推荐阅读
- r - R中是否有一个函数可以在没有值的情况下将行保留在表中?
- javascript - 如何获取点击的li(Javascript,Materialize)的变量?
- python - 如何将 pandas 数据框中的两行合并为具有新名称的一行?
- html - 内联元素的奇怪填充行为(底部填充被尊重,但顶部填充不被尊重)
- sql - Sequelize 会在 where 子句中自动添加子查询。有没有办法让它跳过添加 where 子句
- java - 如何使用spring启动后端java项目?
- php - Voyager Laravel 安装问题(作曲家)
- r - R图中的Hmisc minor.tick范围
- r - Determine if next number in a time series is the max of time series so far (for grouped df)
- sql - 数据库在填充数据时关闭