2017-08-01 17 views
-6

我有一個數據集black friday Here是它的樣子。
年齡在1-17,18-25等範圍內給出。我想用它們的平均值代替所有這些範圍。我可以遍歷年齡段列的每個元素並解析它們並用平均值替換字符串值。這可能是低效的。

所以我想知道有沒有更簡單的方法來做到這一點?或者是否有其他方法來處理數據範圍? (在python of course中)有沒有辦法用數據框中的平均值來代替遠程數據(例如18-25)?

+1

歡迎來到StackOverflow。請花時間閱讀這篇文章[如何提供一個偉大的熊貓示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)以及如何提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)並相應地修改您的問題。 [如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)上的這些技巧也可能有用。 – jezrael

+1

@jezrael,這種問題應該被遷移或轉移到[交叉驗證](https://stats.stackexchange.com/)以獲得有效的反饋。否則,最好關閉/刪除而不是累積下來的投票就好像我們這裏沒有專業人員一樣 – quintumnia

回答

0

有幾種方法可以轉換這個變量。在我看到的圖片中,不僅有箱子,還有值'55 +',所以需要考慮。

1)一個襯墊:

df['age'].apply(lambda x: np.mean([int(x.split('-')[0]), int(x.split('-')[1])]) if '+' not in x else x[:-1]) 

它檢查該值是否包含 '+'(如55歲以上),如果是比沒有 '+' 被返回的值。否則,箱被分成兩個值,它們被轉換爲整數並且它們的平均值被計算。

2)使用字典轉型:

mapping = {'1-17': 9, '18-25': 21.5, '55+': 55} 
df['age'].apply(lambda x: mapping[x]) 

你需要的所有值添加到字典映射(手動或自動計算它們)。然後你將這個轉換應用到系列中。

相關問題