使用python将字符串转换为数据帧中的数字数据

时间:2015-04-29 08:23:31

标签: python azure python-3.x machine-learning dataframe

如果我们在数据框中有字段

A12
A13
A13
A12
A14

我们需要将此字符串转换为

A12   1
A13   2
A13   2
A12   1
A14   3

4 个答案:

答案 0 :(得分:0)

试试这个:

arr=dataframe['old_col'].unique()
dataframe['new_col']=dataframe['old_col'].apply(lambda x: arr.index(x))

答案 1 :(得分:0)

您可以使用词典

counts = {}
for s in strings:
    assigned_number = counts.get( s, len(counts) + 1 )
    counts[s] = assigned_number

答案 2 :(得分:0)

看起来OP想要从第二个数字中减去第一个数字并得到结果。你可以这样做:

my_test = ['A12', 'A13', 'A13', 'A12', 'A14']

def numberMyData(data):
    try:
        nums = re.match('\w(\d)(\d)', data).groups()
        nums = nums[1] - nums[0]
        return (data, nums)
    except:
        return (data, 0)

my_new_data = list(map(numberMyData, my_test))

然后你有一个列表,看起来像这样:

[('A12', 1), ('A13', 2), ('A13', 2), ('A12', 1), ('A14', 3)]

如果您想以问题的格式打印,可以使用以下内容:

for data in my_new_data:
    print('   '.join([data[0], str(data[1])]))

将数据与3个空格连接起来。输出如下:

A12   1
A13   2
A13   2
A12   1
A14   3

答案 3 :(得分:0)

我们假设您的数据框是“df”,并且该字段的标题是“代码”。 您可以将其转换为数值:

def convert_to_num(code):
    if code == 'A12':
        return 1
    elif code == 'A13':
        return 2
    else:
        return 3

df['New_Code'] = df['Code'].apply(convert_to_num)