从Python数据框中选择行

从Python数据框中选择行,python,dataframe,select,rows,Python,Dataframe,Select,Rows,我有一个名为“x”的Python数据帧,如下所示: 363108 05:01:00 363107 05:02:00 363106 05:03:00 363105 05:04:00 363104 05:05:00 ... 4:16:57:00 3 16:58:00 2 16:59:00 1 17:00:00 0 17:01:00 “时间”列是字符串类型 我想从“x”中的所有行创建一个名为“m”的新数据帧,这样分钟数就是“00” 我尝试过m=x.loc[x[“time”][3

我有一个名为“x”的Python数据帧,如下所示:

363108 05:01:00

363107 05:02:00

363106 05:03:00

363105 05:04:00

363104 05:05:00

        ...   
4:16:57:00

3 16:58:00

2 16:59:00

1 17:00:00

0 17:01:00

“时间”列是字符串类型

我想从“x”中的所有行创建一个名为“m”的新数据帧,这样分钟数就是“00”

我尝试过m=x.loc[x[“time”][3:5]==“00”],但我得到了“IndexingError:作为索引器提供的不可对齐的布尔序列(布尔序列的索引和索引对象的索引不匹配)”


有人知道怎么做吗?

一种方法是,您可以在现有数据帧中创建一个新列,该列具有分钟字段,您可以从时间列中进行切片

df['minutes']=df['time'][-2:]
other_df=df.loc[df['minutes']=="00"]

一种方法是,您可以在现有数据帧中创建一个新列,该列具有分钟字段,您可以从时间列中进行切片

df['minutes']=df['time'][-2:]
other_df=df.loc[df['minutes']=="00"]
您应该使用“应用”来表示条件

x.loc[x["time"].apply(lambda s: s[3:5] == "00")]
*在代码中,您得到的是时间序列(第3行到第5行)的范围[3:5]

您应该使用“应用”作为条件

x.loc[x["time"].apply(lambda s: s[3:5] == "00")]

*在您的代码中,时间序列(第3行到第5行)的范围为[3:5]

您是否尝试过使用pandas将时间字符串转换为时间戳,然后在分钟级别使用“重采样”功能?我甚至不知道您在说什么。我想我的问题的解决方法更简单。如果你不熟悉pandas时间序列,你可以使用REGEX:x.str.replace(“(:\d{2})”,:00”)。你是否尝试过使用pandas将时间字符串转换为时间戳,然后在分钟级别使用“重采样”功能?我甚至不知道你在说什么。我想我的问题的解决方法更简单。如果您不熟悉熊猫时间序列,可以使用REGEX:x.str.replace(“(:\d{2})”,:00')。完美。它就像一个符咒。我在x中得到了第3到第5行,这就是代码不起作用的原因。非常感谢,太好了。它就像一个符咒。我在x中得到了第3到第5行,这就是代码不起作用的原因。非常感谢,谢谢赛义德。我想这也行,但GuiGNG的答案更简单,而且很有魅力。谢谢你,谢谢赛义德。我想这也行,但GuiGNG的答案更简单,而且很有魅力。无论如何,谢谢你。