我编写了一个读取多个文件的代码,但是在我的某些文件中,日期时间交换日期和月份的时间不超过13天,而从13天开始的任何一天(即13/06/11)仍然正确(DD / MM / YY)。
我试图通过执行此操作来修复它,但是它不起作用。
我的数据框如下所示:
实际日期时间为2015年6月12日至2015年6月13日
当我以字符串形式读取datetime列时,日期仍然正确dd / mm / yyyy
tmp p1 p2
11/06/2015 00:56:55.060 0 1
11/06/2015 04:16:38.060 0 1
12/06/2015 16:13:30.060 0 1
12/06/2015 21:24:03.060 0 1
13/06/2015 02:31:44.060 0 1
13/06/2015 02:37:49.060 0 1
但是,当我将列的类型更改为datetime列时,它会将每天的日期和月份交换为少于13的每一天。
输出:
print(df)
tmp p1 p2
06/11/2015 00:56:55 0 1
06/11/2015 04:16:38 0 1
06/12/2015 16:13:30 0 1
06/12/2015 21:24:03 0 1
13/06/2015 02:31:44 0 1
13/06/2015 02:37:49 0 1
这是我的代码:
我遍历文件:
df = pd.read_csv(PATH+file, header = None,error_bad_lines=False , sep = '\t')
然后,当我的代码完成读取所有我串联的文件时,问题是我的datetime列需要为datetime类型,因此当我通过pd_datetime()更改其类型时,它将交换日期和月份,而该日期小于13 。
发布转换我的datetime列中的日期是正确的(字符串类型)
print(tmp) # as a result I get 11.06.2015 12:56:05 (11june2015)
但是,当我更改列类型时,我得到了:
tmp = pd.to_datetime(tmp, unit = "ns")
tmp = temps_absolu.apply(lambda x: x.replace(microsecond=0))
print(tmp) # I get 06-11-2016 12:56:05 (06november2015 its not the right date)
问题是:当日期小于13时,我应该使用或更改哪个命令以停止日和月的交换?
更新
此命令交换我专栏的所有日期和月份
tmp = pd.to_datetime(tmp, unit='s').dt.strftime('%#m/%#d/%Y %H:%M:%S')
因此,为了只交换不正确的日期,我写了一个条件:
for t in tmp:
if (t.day < 13):
t = datetime(year=t.year, month=t.day, day=t.month, hour=t.hour, minute=t.minute, second = t.second)
但这也不起作用
参考方案
您可以在dayfirst
中使用pd.to_datetime
参数。
pd.to_datetime(df.tmp, dayfirst=True)
输出:
0 2015-06-11 00:56:55
1 2015-06-11 04:16:38
2 2015-06-12 16:13:30
3 2015-06-12 21:24:03
4 2015-06-13 02:31:44
5 2015-06-13 02:37:49
Name: tmp, dtype: datetime64[ns]
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
python :安装 python 后,如何导入 Pandas - python我已经安装了 python 。现在,当我尝试跑步时import pandas as pd 我收到以下错误Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import pandasFile ImportError: …
Python Pandas检查数据框是否不为空 - python我有一个if语句,它在其中检查数据框是否为空。我的操作方式如下:if dataframe.empty: pass else: #do something 但实际上我需要:if dataframe is not empty: #do something 我的问题是-是否有一种.not_empty()方法可以实现这一目标?我还想问一下第二个版本在性能方面是否更好…
Python Pandas:按分组分组,平均? - python我有一个像这样的数据框:cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 我想计算每个集群每个组织的平均时间。预期结果:cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 我不知道如何在熊猫中做到这一点,有人可以帮忙吗? 参考方案 如…
Python Pandas:在多列上建立布尔索引 - python尽管至少有关于如何在Python的pandas库中为DataFrame编制索引的two good教程,但我仍然无法在一个以上的列上找到一种优雅的SELECT编码方式。>>> d = pd.DataFrame({'x':[1, 2, 3, 4, 5], 'y':[4, 5, 6, 7, 8]}) >…