Объедините 3 колонны в одну колонну панд - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть следующий код:

input= pd.DataFrame({'Police District Name': ['WHEATON', 'SILVER SPRING', 'BETHESDA','GERMANTOWN','WHEATON','MONTGOMERY VILLAGE'], 
                   'cn1': ['Crime Against Person', 'Crime Against Person', 'Crime Against Person','other','other','other'],
                  'cn2': ['Aggravated Assault', 'bla', 'bla','blaa','bla','one more  bla'],
                   'cn3': ['Aggravated Assault', 'bla', 'bla','blaa','bla','one more  bla'],

                    })
input

Желаемый вывод:

output= pd.DataFrame({'Police District Name': ['WHEATON', 'SILVER SPRING', 'BETHESDA','GERMANTOWN','WHEATON','MONTGOMERY VILLAGE'], 
                       'total crime number':[6,3,3,3,6,3],

                    })
output

Как я могу получить это?Спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Если каждое значение в cn1, cn2 заполнено преступлением, вы можете использовать количество столбцов.Идея состоит в том, чтобы построить серию отсчетов через value_counts и умножить на количество cnx столбцов.Затем отобразите на свой фрейм данных.

counts = df['Police District Name'].value_counts() * (len(df.columns) - 1)
df['total crime number'] = df['Police District Name'].map(counts)

print(df[['Police District Name', 'total crime number']])

  Police District Name  total crime number
0              WHEATON                   6
1        SILVER SPRING                   3
2             BETHESDA                   3
3           GERMANTOWN                   3
4              WHEATON                   6
5   MONTGOMERY VILLAGE                   3
...