在 Python 中证明 YEAR 列数字的合理性
justifying the YEAR column digit in Python
我有一个大数据集。我用熊猫将 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
我有一个大数据集。我用熊猫将 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