我正在使用数据集-陨石降落,可在此处找到https://www.kaggle.com/nasa/meteorite-landings#meteorite-landings.csv
数据快照:https://imgur.com/a/CrwL3h6
数据集有一个'year'列,我将其重命名为'year1'
data = data.rename(columns = {"year":"year1"})
给出 year1 列:
0 01/01/1880 12:00:00 AM
1 1/1/1951 0:00
2 1/1/1952 0:00
3 1/1/1976 0:00
4 1/1/1902 0:00
...
45711 1/1/1990 0:00
45712 1/1/1999 0:00
45713 1/1/1939 0:00
45714 1/1/2003 0:00
45715 1/1/1976 0:00
Name: year1, Length: 45716, dtype: object
我想将此列转换为datetime格式,以便仅保留年份,因为日期和时间是重复的值,这没有用,而且该列的名称为“ year”。
我用了这个:
data['year1'] = pd.to_datetime(data['year1'])
当我尝试这样做时显示错误:
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1583-01-01 00:00:00
为了解决这个问题,我尝试使用此方法:
data['year1'] = pd.to_datetime(data['year1'],errors='coerce')
但是这样做,即使year1列也不是日期时间格式。
如何将其转换为日期时间格式?
name id nametype recclass mass fall year reclat reclong GeoLocation
Aachen 1 Valid L5 21.0 Fell 1880.0 50.77500 6.08333 (50.775000, 6.083330)
Aarhus 2 Valid H6 720.0 Fell 1951.0 56.18333 10.23333 (56.183330, 10.233330)
Abee 6 Valid EH4 107000.0 Fell 1952.0 54.21667 -113.00000 (54.216670, -113.000000)
Acapulco 10 Valid Acapulcoite 1914.0 Fell 1976.0 16.88333 -99.90000 (16.883330, -99.900000)
Achiras 370 Valid L6 780.0 Fell 1902.0 -33.16667 -64.95000 (-33.166670, -64.950000)
Adhi Kot 379 Valid EH4 4239.0 Fell 1919.0 32.10000 71.80000 (32.100000, 71.800000)
Adzhi-Bogdo (stone) 390 Valid LL3-6 910.0 Fell 1949.0 44.83333 95.16667 (44.833330, 95.166670)
Agen 392 Valid H5 30000.0 Fell 1814.0 44.21667 0.61667 (44.216670, 0.616670)
Aguada 398 Valid L6 1620.0 Fell 1930.0 -31.60000 -65.23333 (-31.600000, -65.233330)
Aguila Blanca 417 Valid L 1440.0 Fell 1920.0 -30.86667 -64.55000 (-30.866670, -64.550000)
答案 0 :(得分:1)
Pandas拒绝使用日期时间早于1677的日期。但是无论如何,因为您输入的CSV文件的public void DoSomethingWith(IEnumerable<string> values)
{
var notNullValues = values.Where(value => value != null).ToArray();
// Do something with not null values
}
public void DoSomethingWith(IEnumerable<Nullable<T>> values)
{
var notEmptyValues = values.Where(value => value.HasValue).ToArray();
// Do something with not null values
}
列正好是这样:一年。因此,只需停止执行将year
列转换为日期时间的操作,然后将其加载为纯整数列即可。