Python 将3列合并为一列
我有以下代码:Python 将3列合并为一列,python,pandas,split-apply-combine,Python,Pandas,Split Apply Combine,我有以下代码: 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','oth
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
我怎么能得到这个?。
谢谢大家! 如果
cn1
,cn2
中的每个值都填充了犯罪,则可以使用列数。其思想是通过value\u 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
值6、3等从何而来?@KenDekalb每个警区的犯罪计数,例如:WHEATON total crimes=6“cn1用于犯罪名称1等”