2017-08-10 48 views
0

我有用熊貓創建的數據框架。它有3列。其中之一的格式爲%Y%m%d%H。我需要找到與格式爲%Y%m%d的日期匹配的行。如何在Pandas的列中找到部分數值?

我試圖

df.loc[df["MESS_DATUM"] == 20170807] 

不工作。只有當我做

df.loc[df["MESS_DATUM"] == 2017080723] 

它適用於單線。但是我需要其他只包含日期的行(不包括小時)。我知道有像.str.cotains("")。有沒有類似的數值或在上面的行中使用通配符的方法?

回答

2

我們可以在 「整數除法」 MESS_DATUM列由100

df.loc[df["MESS_DATUM"]//100 == 20170807] 

演示:

In [29]: df 
Out[29]: 
    MESS_DATUM 
0 2017080719 
1 2017080720 
2 2017080721 
3 2017080722 
4 2017080723 

In [30]: df.dtypes 
Out[30]: 
MESS_DATUM int64 
dtype: object 

In [31]: df["MESS_DATUM"]//100 
Out[31]: 
0 20170807 
1 20170807 
2 20170807 
3 20170807 
4 20170807 
Name: MESS_DATUM, dtype: int64 

但我會考慮將其轉換爲datetime D型:

df["MESS_DATUM"] = pd.to_datetime(df["MESS_DATUM"].astype(str), format='%Y%m%d%H') 

如果df["MESS_DATUM"]float D型的,那麼我們可以使用下面的技巧:

In [41]: pd.to_datetime(df["MESS_DATUM"].astype(str).str.split('.').str[0], 
         format='%Y%m%d%H') 
Out[41]: 
0 2017-08-07 19:00:00 
1 2017-08-07 20:00:00 
2 2017-08-07 21:00:00 
3 2017-08-07 22:00:00 
4 2017-08-07 23:00:00 
Name: MESS_DATUM, dtype: datetime64[ns] 
+0

第一個命令工作完全正常。你能解釋它的作用嗎?由於我需要更改爲日期格式,所以我也測試了第二種方法。但是我遇到了一個'ValueError:未轉換的數據仍然是:.0'。不知道是什麼造成的。我猜的類型佛DF或列? – BallerNacken

+0

@BallerNacken,我已經添加了一個小演示...什麼是'MESS_DATUM'的dtype - 我想它是浮動的?在將'df [「MESS_DATUM」]'轉換爲datetime dtype時,您是否想保留'hour'部分? – MaxU

+0

是'MESS_DATUM'是浮動的。是的,我需要保持一個小時。 – BallerNacken

相關問題