我有以下DF:
carrier_name sol_carrier
aapt 702
aapt carrier 185
afrix 72
afr-ix 4
airtel 35
airtel 2
airtel dia and broadband 32
airtel mpls standard circuits 32
amt 6
anca test 1
appt 1
at tokyo 1
at&t 5041
att 2
batelco 723
batelco 2
batelco (manual) 4
beeline 1702
beeline - 01 6
beeline - 02 6
我需要获取carrier_name
的唯一列表,所以我做了一些基本的整理工作,因为我只想使用以下代码在观察的开始或结尾保留没有空格的名称:>
`carrier = pd.DataFrame(data['sol_carrier'].value_counts(dropna=False))
carrier['carrier_name'] = carrier.index
carrier['carrier_name'] = carrier['carrier_name'].str.strip()
carrier['carrier_name'] = carrier['carrier_name'].str.replace('[^a-zA-Z]', ' ')
carrier['carrier_name'] = np.where(carrier['carrier_name']==' ',np.NaN,carrier['carrier_name'])
carrier['carrier_name'] = carrier['carrier_name'].str.strip()
carrier = carrier.reset_index(drop=True)
carrier = carrier[['carrier_name','sol_carrier']]
carrier.sort_values(by='carrier_name')`
这里发生的事情是我得到了carrier_name
的列表,但仍然得到了一些重复的观察结果,例如airtel
或beeline
。我不明白为什么会这样,因为两个观察值都相同,并且在观察值的开始或结尾处都没有空格,并且这些观察值后跟着各自的value_counts()
,因此没有理由要复制。这是相同的DF,但是在应用了上面的代码之后:
carrier_name sol_carrier
aapt 702
aapt carrier 185
afr ix 4
afrix 72
airtel 35
airtel 2
airtel dia and broadband 32
airtel mpls standard circuits 32
amt 6
anca test 1
appt 1
at t 5041
at tokyo 1
att 2
batelco 723
batelco 2
batelco manual 4
beeline 1702
beeline 6
beeline 6
答案 0 :(得分:0)
之所以会这样,是因为您不汇总结果,而只是更改“ carrier_name”列中的值。
要汇总结果调用
carrier.groupby('carrier_name').sol_carrier.sum()
或修改“数据”数据框,然后调用
data['sol_carrier'].value_counts()