关于数据框特征的相同观察显示为独立

时间:2019-11-28 11:42:08

标签: python pandas replace

我有以下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的列表,但仍然得到了一些重复的观察结果,例如airtelbeeline。我不明白为什么会这样,因为两个观察值都相同,并且在观察值的开始或结尾处都没有空格,并且这些观察值后跟着各自的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

1 个答案:

答案 0 :(得分:0)

之所以会这样,是因为您不汇总结果,而只是更改“ carrier_name”列中的值。

要汇总结果调用

carrier.groupby('carrier_name').sol_carrier.sum()

或修改“数据”数据框,然后调用

data['sol_carrier'].value_counts()