如何按项目编号最后一位过滤Pandas DataFrame?
过滤项目编号以0结尾的DataFrame行
用户需要修改现有Pandas代码,从Excel读取的DataFrame中筛选出项目编号最后一位为0的行,生成新的DataFrame df_0。原代码通过完整项目编号匹配过滤,尝试的代码无法运行。
原代码
import pandas as pd df = pd.read_excel(r'C:\Users\XXXXXX.xlsx') projects_df = df["Project Number"].drop_duplicates() df_0 = df[df["Project Number"] == XXXXXXX]
错误尝试代码
df_0 = df[df["Project Number"][-1] == 0]
正确实现方案
错误原因说明
df["Project Number"][-1]的作用是取该列的最后一行数据,而非每个元素的最后一位,因此无法实现批量判断。需根据项目编号的数据类型选择对应方法:
1. 若项目编号为字符串类型
直接用str[-1]提取每个元素的最后一位,再判断是否等于'0':
import pandas as pd df = pd.read_excel(r'C:\Users\XXXXXX.xlsx') df_0 = df[df["Project Number"].str[-1] == '0']
2. 若项目编号为数值类型(int/float)
使用取模运算% 10,判断余数是否为0(即最后一位是0):
import pandas as pd df = pd.read_excel(r'C:\Users\XXXXXX.xlsx') df_0 = df[df["Project Number"] % 10 == 0]
3. 兼容两种数据类型的通用写法
如果不确定项目编号的类型,可以先转为字符串再处理:
import pandas as pd df = pd.read_excel(r'C:\Users\XXXXXX.xlsx') df_0 = df[df["Project Number"].astype(str).str[-1] == '0']
内容的提问来源于stack exchange,提问作者user2981194
相关产品推荐
相关产品推荐

