编写一个程序,将日期和时间从 Python Pandas 中的 datetime 列中分离出来
pythonpandasserver side programmingprogramming
假设,数据框中有一个 datetime 列,分离日期和时间的结果是,
datetime date time 0 2020-01-01 07:00:00 2020-01-06 07:00:00 1 2020-01-02 07:00:00 2020-01-06 07:00:00 2 2020-01-03 07:00:00 2020-01-06 07:00:00 3 2020-01-04 07:00:00 2020-01-06 07:00:00 4 2020-01-05 07:00:00 2020-01-06 07:00:00 5 2020-01-06 07:00:00 2020-01-06 07:00:00
为了解决这个问题,我们将遵循以下方法 −
解决方案 1
使用 pd.date_range() 定义数据框"datetime"列。定义如下,
pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
设置for循环d变量,逐个访问df[‘datetime’]列。
从for循环转换日期和时间,并保存为df[‘date’]和df[‘time’]。定义如下,
for d in df['datetime']: df['date'] = d.date() df['time'] = d.time()
示例
让我们检查以下代码以更好地理解 −
import pandas as pd df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)}) print("DataFrame is:\n", df) for d in df['datetime']: df['date'] = d.date() df['time'] = d.time() print(df)
输出
DataFrame is: datetime 0 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2 2020-01-03 07:10:00 3 2020-01-04 07:10:00 4 2020-01-05 07:10:00 5 2020-01-06 07:10:00 Date-time-hour-minutes : datetime date time 0 2020-01-01 07:10:00 2020-01-06 07:10:00 1 2020-01-02 07:10:00 2020-01-06 07:10:00 2 2020-01-03 07:10:00 2020-01-06 07:10:00 3 2020-01-04 07:10:00 2020-01-06 07:10:00 4 2020-01-05 07:10:00 2020-01-06 07:10:00 5 2020-01-06 07:10:00 2020-01-06 07:10:00
解决方案 2
定义一个数据框
在 df[‘datetime’] 中应用 pd.to_datetime() 函数并使用 dt.date 选择日期,然后将其保存为 df[‘date’]
在 df[‘datetime’] 中应用 pd.to_datetime() 函数并使用 dt.time 选择时间,然后将其保存为 df[‘time’]
示例
让我们检查以下代码以获得更好的理解 −
import pandas as pd df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:10',periods=6)}) print("DataFrame is:\n", df) df['date'] = pd.to_datetime(df['datetime']).dt.date df['time'] = pd.to_datetime(df['datetime']).dt.time print("Date-time-hour-minutes :\n", df)
输出
DataFrame is: datetime 0 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2 2020-01-03 07:10:00 3 2020-01-04 07:10:00 4 2020-01-05 07:10:00 5 2020-01-06 07:10:00 Date-time-hour-minutes : datetime date time 0 2020-01-01 07:10:00 2020-01-06 07:10:00 1 2020-01-02 07:10:00 2020-01-06 07:10:00 2 2020-01-03 07:10:00 2020-01-06 07:10:00 3 2020-01-04 07:10:00 2020-01-06 07:10:00 4 2020-01-05 07:10:00 2020-01-06 07:10:00 5 2020-01-06 07:10:00 2020-01-06 07:10:00