python - 删除以 '.' 结尾的特定行的最后一个字符
问题描述
我有多个具有相同类型数据的 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
我得到的输出是 -
编号 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."]))
但它们都不起作用。
解决方案
假设您仅.
在字符串末尾存在一个时删除它:
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)
推荐阅读
- sql - 如何使用 SSIS 将包含 Blob 列的表从一个 Oracle 表到另一个表
- python - Flask Restplus - 在服务器上找不到请求的 URL
- swift - 如何通过物化处理永无止境的链上的错误?
- sql-server - php如何通过使用活动目录连接到sql server
- entity-framework - 在实体框架中复制表
- r - 如何将每个变量范围除以R中的第二个变量范围
- r - 如何在R中的ggplot中更改堆叠堆积条形图的位置?
- c# - 将 CSV 上传到解决方案资源管理器
- localization - RealURL 对多语言站点使用 L=0 PostVar 而不是 /en PreVar
- google-cloud-platform - firestore - 查询根实体