python - 在 Python 中证明 YEAR 列数字的合理性
问题描述
我有一个大数据集。我将 CSV 转换为带有熊猫的数据框。该列包括从 1965 年到 2015 年的年份。该列的样本类似于
1965.0
66.0
67.0
.
.
.
69.0
1970.0
71.0
.
.
79.0
1980.0
.
.
.
2000.0
1.0
2.0
.
.
.
15.0
所以我的问题是如何在没有最后一个 .0 的情况下将所有此列更改为 4 位格式
顺便说一句,当我使用 .info() 检查我的数据时,此列是:
Year 51 non-null object
谢谢
解决方案
您可以将列转换为float
,应用分别添加 1900 或 2000 的自定义函数。int
如果这对您更有用,则将其输出转换为类型。前任:
import pandas as pd
df = pd.DataFrame({'y': ['1970.0',
'71.0',
'79.0',
'1980.0',
'2000.0',
'1.0',
'2.0',
'15.0']})
def to_4digit(i):
if i < 1900:
if i >= 65:
return 1900 + i
return 2000 + i
return i
df['y'] = df['y'].astype(float).apply(to_4digit).astype(int)
# df['y']
# 0 1970
# 1 1971
# 2 1979
# 3 1980
# 4 2000
# 5 2001
# 6 2002
# 7 2015
推荐阅读
- python - 数据框小计和百分比
- python - 将累积高斯拟合到数据
- algorithm - 是否可以使用 O(1) 插入、删除和 O(1) 访问最小值来创建 LinkedList 实现?
- c++ - 为什么我需要在代码块中使用 #define 而不是在 Visual Studio 中?(GLFW)
- php - 如何在 mediawiki 中使用非英语命名空间?
- java - 如何在 Spring Boot 和 thymeleaf 中编辑数据库条目
- python - 捕获重复键错误的正确方法是什么?
- android - 在收到通知时打开活动
- php - Laravel 相对临时签名路由签名始终无效
- android - 无法通过 Intent 从子活动(谷歌地图)传递价值到父活动