我在 pandas 中有一個資料框,它最初有一個決議的日期列,其值如下:2020-05-11 02:23:00.
從那我創建了一個“日期”列,使用df['Date'] = df.parsed_date_column.dt.date生成值,例如2020-05-11資料型別為“物件”。
從那里我想只保留某個日期的行,即df.loc[df['Date'] == '2021-06-26']或更簡單df[df['Date'] == '2021-06-26']。
每當我執行此操作時,它都會回傳一個沒有行且只有列名的空資料框。
我嘗試將其轉換為 datetime64: pd.to_datetime(df['Date'], format='%Y-%m-%d'),
將物件指定為 string: combined_lanes[~combined_lanes['Date'].str.contains("2021-06-20")],
并單獨定義日期:
date = "2021-06-20"
df = df[df['Date'].str.lower() == date]
我沒有嘗試或研究過任何作品。
注意:當我嘗試其他列時不會發生這種情況,包括資料型別為“物件”的列。
uj5u.com熱心網友回復:
您的列中有一個datetime.datedtype,因此您必須與相同的型別進行比較。
您可以使用Timestamp.date它來生成它:
df.loc[df['date'] == pd.Timestamp('2021-06-20').date()]
uj5u.com熱心網友回復:
讓我們拿一個示例資料框
import pandas as pd
import numpy as np
from datetime import datetime
rand = np.random.RandomState(0)
df = pd.DataFrame({
'date': pd.date_range('2022-01-01 13:13:05', freq='d', periods=10),
'var': rand.randn(10),
})
df.head()
date var
0 2022-01-01 13:13:05 1.764052
1 2022-01-02 13:13:05 0.400157
2 2022-01-03 13:13:05 0.978738
3 2022-01-04 13:13:05 2.240893
4 2022-01-05 13:13:05 1.867558
要僅保留年月日資訊,您可以這樣做
df['date'] = df['date'].dt.date
df.head()
date var
0 2022-01-01 1.764052
1 2022-01-02 0.400157
2 2022-01-03 0.978738
3 2022-01-04 2.240893
4 2022-01-05 1.867558
每當您在執行條件操作時遇到問題時,最好檢查您正在比較的元素的資料型別。在人眼看來它可能看起來相同,但代碼可能會以不同的方式解釋它。所以,
print(type(df.loc[0,'date']))
<class 'datetime.date'>
相似地,
flt_date = datetime.strptime('2022-01-08', "%Y-%m-%d").date()
print(type(flt_date))
<class 'datetime.date'>
現在資料型別匹配了,您可以進行比較
df.loc[df['date']==flt_date]
退貨
date var
7 2022-01-08 -0.151357
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520861.html
標籤:熊猫日期目的熊猫-loc
