我怎样才能 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]
我有一个包含挖掘评论(和回复)的数据框,如下所示:
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]