替换过度打孔的值

时间:2019-08-26 12:36:30

标签: pandas

我在数据框(df_Type4)中有一列(DS),该列的打孔值如下所示

16       100
17       10}
18       20}
21       200
22       10N

我想将}的最后一位替换为0,以使数字为100,例如,明智的N为5,因此数字为105,依此类推。

我尝试如下提取最后一位。

df_Type4['DS'].str[2]

我想使用if-else因为有多个值。但是,当我将其视为字符串时,它似乎不起作用。还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

如果要进行多个转换,请使用以下内容:

trans_dict = {'}': '0',
              'N': '5'}
trans_table = ''.join(trans_dict.keys()).maketrans(trans_dict)
df_Type4['DS'] = df_Type4['DS'].str.translate(trans_table)

16  100
17  100
18  200
21  200
22  105

或更简单地,您可以使用:

df_Type4['DS'] = df_Type4['DS'].replace(trans_dict, regex=True)

答案 1 :(得分:0)

尝试:

df_Type4['DS'] = df_Type4['DS'].str.replace("}", "0")
df_Type4['DS'] = df_Type4['DS'].str.replace("N", "5")
# etc.

或将它们链接成一个长表达式:

df_Type4['DS'] = df_Type4['DS'].str.replace("}", "0").replace("N", "5")

取决于您要替换多少个不同的值。然后将列从字符串转换为整数(或浮点数):

df_Type4['DS'] = pd.to_numeric(df_Type4['DS'])