我有一个如下所示的数据框
df = pd.DataFrame({
'subject_id':[1,1,1,1,1,1],
'val' :[5,6.4,5.4,6,6,6]
})
如下图所示
我想从以 .[1-9]
结尾的 val
列中删除 values
。基本上,我想保留像 5.0
、6.0
这样的值,并删除像 5.4
、6.4
等这样的值
虽然我在下面尝试过,但它并不准确
df['val'] = df['val'].astype(int)
df.drop_duplicates() # it doesn't give expected output and not accurate.
我希望我的输出如下所示
最佳答案
第一个想法是将原始值与转换列与整数进行比较,同时将整数分配回预期输出(列中的整数):
s = df['val']
df['val'] = df['val'].astype(int)
df = df[df['val'] == s]
print (df)
subject_id val
0 1 5
3 1 6
4 1 6
5 1 6
另一个想法是测试 is_integer
:
mask = df['val'].apply(lambda x: x.is_integer())
df['val'] = df['val'].astype(int)
df = df[mask]
print (df)
subject_id val
0 1 5
3 1 6
4 1 6
5 1 6
如果需要在输出中 float ,您可以使用:
df1 = df[ df['val'].astype(int) == df['val']]
print (df1)
subject_id val
0 1 5.0
3 1 6.0
4 1 6.0
5 1 6.0
关于python - 如何从列中删除浮点值 - pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57752092/