我怎样才能 select 只有包含单个数字浮点数的行?

How can I select only rows that contain single digit floats?

我有一个包含挖掘评论(和回复)的数据框,如下所示:

Comment_ID | COMMENT
1.0          foo
1.1          re:foo
1.2          re:foo
2.0          foo

评论ID表示评论是顶级评论还是通过数字回复。偶数总是顶级评论(在本例中为 1.0 和 2.0)。我现在只想从我的数据框中提取顶级评论。我该怎么做?

我想到的一个解决方案是这个

df = df[df['Comment_ID'] == 1.0]

但这只会给我一行。我需要这样的东西(有效)

df = df[df['Comment_ID'] == 1.0:300.0]

当您想对自定义列进行一些操作时,您可以随时使用.apply。例如

import pandas as pd

if __name__ == '__main__':
    df = pd.DataFrame(data={'Comment_ID':[1.0, 1.1, 1.2, 2.0], 'COMMENT':['foo','re:foo','re:foo','foo']})
    print(df)
    mask = df['Comment_ID'].apply(lambda x: str(x).partition('.')[2]) == '0'
    print(df[mask])

打印

   Comment_ID COMMENT
0         1.0     foo
1         1.1  re:foo
2         1.2  re:foo
3         2.0     foo
   Comment_ID COMMENT
0         1.0     foo
3         2.0     foo

我在这里假设您的所有数据都是 number.digit 的形式,如您的示例所示。如果可以有多个数字,你将不得不做一些稍微不同的事情。

对于@mCoding 的回答,您可以通过其他方式检查您的值是否为整数,例如this SO question 中描述。根据您的问题改编的一个很好的例子是:

df[df["Comment_ID"] % 1 == 0]