如何在熊猫中将对象转换为DateTime

时间:2020-07-14 14:32:00

标签: python pandas datetime python-datetime pandas-datareader

我有一个非常混乱的文件,其中有一些日期时间需要读取并将其用作索引。 (我正在添加此代码以阐明其数据外观)。日期时间位于我凌乱的文件中,看起来像:

31.01.2016 13:59:13 31.01.2016 13:59:13 31.01.2016 14:39:20 31.01.2016 14:39:20 31.01.2016 15:19:27 31.01.2016 15:19:27 31.01.2016 15:59:34 31.01.2016 15:59:34 31.01.2016 16:39:41 31.01.2016 16:39:41 31.01.2016 17:19:48 31.01.2016 17:19:48 31.01.2016 17:59:55 31.01.2016 17:59:55 31.01.2016 18:40:02 

下一个我用来读取文件的代码(这是一个非常混乱的文件):

df = pd.melt(pd.read_csv(file, delimiter='\t', skiprows=3, index_col=0, decimal=",").rename(columns={"Unnamed: 1":"Depth [m]"}), id_vars=["Depth [m]"], var_name="Date", value_name="Temperature").set_index("Date"))

我得到的结果是一个DataFrame。此DataFrame有一个应转换为DateTime(Date)的列,此后,我将其用作索引。当我阅读DataFrame并尝试将日期转换为DateTime时,此方法不起作用。在此步骤中,日期是一个“对象”。我的数据如下:

                  Date  Depth [m]  Temperature
0  01.01.2016 00:32:09        0.0        26.59
1  01.01.2016 01:12:16        0.0        26.67
2  01.01.2016 01:52:23        0.0        26.45
3  01.01.2016 02:32:30        0.0        26.41
4  01.01.2016 03:12:37        0.0        26.43

当我将带有“强制”的pd.to_datetime()应用于下一个时:

df["Date] = pd.to_datetime(df["Date], errors="coerce", format= "%d.%m.%Y %H:%M:%S" )
DatetimeIndex: 10001662 entries, 2016-01-01 00:32:09 to 2015-12-31 23:52:02

这可以工作,但是我里面有很多NAT值

当我将pd.to_datetime()与“ ignore”一起应用时,检查DF的信息是否出现在下一个:

df["Date] = pd.to_datetime(df["Date], errors="ignore", format= "%d.%m.%Y %H:%M:%S" )

静止物体和物体

Index: 10001662 entries, 01.01.2016 00:32:09 to 31.12.2015 23:52:02

当我将pd.to_datetime()与“ raise”一起应用时,它不起作用。

对我做错的事情有任何想法吗?

1 个答案:

答案 0 :(得分:0)

最后我明白了。我没有将格式应用于日期。我用这个:

df["Date"] = pd.to_datetime(df["Date"], errors="coerce", dayfirst=True )

即使在数据框中有重复的值,我也能得到想要的。我必须放下它们。

df = df.reset_index()
df = df.drop_duplicates(keep="first")

一切就绪。