基于第一列v的整数值过滤DataFrame的技术需求
筛选DataFrame中
v列为整数值的行 首先咱们明确需求:从你的DataFrame里只保留v列值为整数的行(像3.0、4.0这类本质是整数的浮点数也符合要求)。
原始数据
先把你的输入DataFrame用代码还原出来:
import pandas as pd data = { 'v': [2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0], 'P_el': [0, 78, 172, 287, 426, 601, 814, 1069, 1367, 1717, 2110, 2546, 3002, 3427, 3751, 3922] } df = pd.DataFrame(data)
方法一:用is_integer()判断浮点数属性
浮点数类型自带is_integer()方法,可以直接判断该值是否为整数,结合apply就能筛选:
filtered_df = df[df['v'].apply(lambda x: x.is_integer())] print(filtered_df)
方法二:比较原值与转整数后的值
另一种思路是把v列转成整数再和原值对比,相等的就是整数型浮点数:
filtered_df = df[df['v'] == df['v'].astype(int)] print(filtered_df)
最终输出
两种方法都会得到你期望的结果:
v P_el 1 3.0 78 3 4.0 287 5 5.0 601 7 6.0 1069 9 7.0 1717 11 8.0 2546 13 9.0 3427 15 10.0 3922
如果你的v列里存在真正的整数类型(不是浮点数),这两种方法也完全适用,兼容性拉满。
内容的提问来源于stack exchange,提问作者Haribo
相关产品推荐
相关产品推荐

