python - Python Pandas - 检测列和数字格式
问题描述
我使用 Pandas 来管理 csv。不幸的是,我有使用“逗号”作为小数分隔符的数字列:
埃斯。50,12
当我使用 convert_dtypes() 函数时,这些列被转换为字符串而不是数字,因此排序函数无法正常工作。
有没有办法指定数据集的“数字格式”,所以每个数字都被认为是 NNNN,DD 而不是 NNNN.DD
例子:
| Gross Amount | Item Number|
-----------------------------
|52,50 | 1 |
|498,00 | 2 |
|10,01 | 3 |
|1,74 | 4 |
|518,04 | 5 |
|2,10 | 6 |
自动检测返回:
Gross Amount string
Item Number Int64
所以当我按“总金额”排序时,它会排序字符串而不是数字,例如,“10,01”在“2,10”之前打印
解决方案
假设调用 DataFrame 时df
。您可以使用下面的代码。
代码:
for column in df.columns:
if pd.api.types.is_string_dtype(df[column]):
try:
df[column] = df[column].str.replace(',', '.').astype('float')
except:
pass
推荐阅读
- javascript - 花式树:如何根据结果调用两个端点
- c# - 自定义生产者消费者在使用阻塞收集时随机停止
- flutter - ListView 在 Flutter 中不滚动
- postgresql - 在 PostgreSQL 11.0 中匹配列值并忽略字符串中的特殊字符
- vba - 使用文本作为书签的名称
- c# - 处理缺失的 XML 元素
- microsoft-teams - 使用 GraphApi 在 MS Teams 上自动记录通话
- excel - MS Office 上次更新导致处理 VBA 代码时出现一些奇怪的行为
- amazon-redshift - 加载大型数据集导致连接被拒绝
- android - 为什么我要把 Flutter 中的字符串设为空?