删除以“。”结尾的特定行的最后一个字符。

时间:2019-06-18 04:56:08

标签: python regex python-3.x pandas dataframe

我有多个具有相同数据类型的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. :

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."]))

但是它们都不起作用。

标题: enter image description here

脏行: enter image description here

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

假设您是“序列号”列。是字符串类型,然后尝试以下操作:

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

您可以将列类型更改为字符串

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

答案 2 :(得分:0)

问题是“。”末尾还有另外四个尾随空格,但未被注意。

所以用-删除这些空格后

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

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

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