Создание нового столбца с номерами в Pandas для группировки столбца с существующими номерами - PullRequest
0 голосов
/ 13 июня 2018

Добрый день,

У меня есть столбец из фрейма данных здесь:

 A
 23
 10
 11 
 22

Моя цель - создать новый столбец и связать числа следующим образом:

A     file_number
23        8
10        6
11        6
22        8

Как видно выше, оба числа 22, 23 связаны с числом 8, а числа 10 и 11 связаны с номером 6. Как я могу создать такой столбец?Заранее спасибо

1 Ответ

0 голосов
/ 13 июня 2018

Я думаю, что нужно, если нужно, создать новые значения по первому значению числа с map по словарю:

print (df['A'].apply(type))
0    <class 'int'>
1    <class 'int'>
2    <class 'int'>
3    <class 'int'>
Name: A, dtype: object

df['new'] = (df['A'] // 10).map({1:6, 2:8})
print (df)
    A  new
0  23    8
1  10    6
2  11    6
3  22    8

Detail :

print ((df['A'] // 10))
0    2
1    1
2    1
3    2
Name: A, dtype: int64

Другое решение работает со строками:

df['new'] = df['A'].astype(str).str[0].map({'1':6, '2':8})

print (df['A'].apply(type))
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
Name: A, dtype: object

df['new'] = df['A'].str[0].map({'1':6, '2':8})

Если необходимо преобразовать положительное число в первое числовое, можно использовать это решение, преобразованное в numpy/pandas:

df['new'] = df['A'] // 10 ** np.log10(df['A'].values).astype(int)

print (df)
        A  new
0       2    2
1   10000    1
2     110    1
3  220000    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...