如何在Pandas中的列中找到部分数值?

2024-10-03 15:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我用熊猫创建了一个数据框。它有3列。其中一个的日期格式为%Y%m%d%H。我需要找到与格式为%Y%m%d的日期匹配的行

我试过了

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

这是行不通的。只有我知道的时候

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

它适用于那条线。但我需要的其他行只包含日期(不含小时)。我知道有点像.str.cotains("")。在上面的行中,是否有类似的数值或使用通配符的方法


Tags: 数据方法df格式loc数值小时str
1条回答
网友
1楼 · 发布于 2024-10-03 15:24:41

我们可以用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数据类型:

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

如果df["MESS_DATUM"]float类型,那么我们可以使用以下技巧:

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]

相关问题 更多 >