为了账号安全,请及时绑定邮箱和手机立即绑定

删除以 '.' 结尾的特定行的最后一个字符

删除以 '.' 结尾的特定行的最后一个字符

慕沐林林 2022-03-09 21:26:51
我有多个具有相同类型数据的 csv 文件要在行上合并以形成单个数据框,但某些行名称包含脏数据。例如 '。' 在实际名称的末尾。我尝试了以下代码 -for file in all_files:temp = pd.read_csv(file, encoding = "unicode_escape")temp = temp[['S.No.', 'Item', '2014-15']]state = lambda x: x.split('-')temp.rename(columns = {'2014-15':state(file)[1]}, inplace= True)if file == all_files[0]:    all_states = temp.copy(deep=True)else:    temp["Item"] = temp["Item"].str.replace("*", "")    all_states = pd.merge(all_states, temp, how = 'outer', on = ['S.No.', 'Item'])del temp我得到的输出是 -S.No. 1 1.1 1.2 1.3 . . .1.1。--> 需要去掉这些,把它们当作 1.1被污染的 S.No. 为单个列形成一个新行。我需要它与其他人在同一行。我只想要最后一个'。在要删除的字符串的末尾,而不是全部。我尝试了以下方法来清理 S.No. :temp["S.No."] = temp["S.No."].str.rstrip(".")temp["S.No."] = temp["S.No."].str.replace(".$", "")temp["S.No."] = re.sub(r".$", "", str(temp["S.No."]))但它们都不起作用。标题:脏行:
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

假设您仅.在字符串末尾存在一个时删除它:

def clean_s_no(text):
    return re.sub('\.$', '', text)

注意\(转义字符)和$(字符串结尾)。

然后,将该函数应用于该列的所有行:

temp["S.No."] = temp["S.No."].apply(lambda x: clean_s_no(x), axis=1)

要么

temp["S.No."] = temp["S.No."].apply(clean_s_no, axis=1)


查看完整回答
反对 回复 2022-03-09
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

问题是'.' 最后还有另外 4 个尾随空格未被注意到。

所以在删除这些空格后 -

temp["S.No."] = temp["S.No."].str.strip()

所有提到的方法都有效。我用了 -

temp["S.No."] = temp["S.No."].str.rstrip(".")


查看完整回答
反对 回复 2022-03-09
?
哔哔one

TA贡献1854条经验 获得超8个赞

假设您是“S.No.”列 是字符串类型,然后尝试以下操作:

temp.loc[temp["S.No."].str.contains('.'), 'S.No.'] = temp["S.No."].str.replace(".","")

您可以通过以下方式将列类型更改为字符串

temp["S.No."] = temp["S.No."].astype(str)


查看完整回答
反对 回复 2022-03-09
  • 3 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号