我有一個資料集,其中包含國家名稱和檔案中的一些其他資訊,例如工資。問題是我需要在按 country_id 和 city 分組的檔案中查找員工的平均工資,范圍為 (0, 5000] (5000, 10000] 和 (10000, 15000])。我使用的是這種方法,但結果表不是如我所愿。你能幫我嗎?
df = file.groupby(['country_id',"city"])['salary'].mean().reset_index(name="mean")
bins = [0, 5000]
df['binned'] = pd.cut(df['mean'], bins)
print(df)
uj5u.com熱心網友回復:
我認為如果您的工資箱范圍始終為 5000,您可以使用/運算子和math.ceil
import math
df = pd.DataFrame({
'salary':[
1231, 5000, 7304, 10000, 12302, 15000,
1001, 4900, 6012, 9123, 11231, 14923
],
'country': [
'USA','USA','USA','USA','USA','USA',
'UK','UK','UK','UK','UK','UK'
]
})
df['salary_bin_number'] = (df['salary'] / 5000).apply(lambda x: math.ceil(x))
df.head()
| 薪水 | 國家 | 工資箱號 |
|---|---|---|
| 1231 | 美國 | 1 |
| 5000 | 美國 | 1 |
| 7304 | 美國 | 2 |
| 10000 | 美國 | 2 |
| 12302 | 美國 | 3 |
使用salary_bin_number,您可以使用以下代碼創建 bin 的列名
df['salary_range_str'] = df['salary_bin_number'].apply(
lambda bin_number: f'({(bin_number-1) * 5000}-{(bin_number) * 5000}]'
)
然后按salary_range_str和分組,country計算每個人的平均工資country,salary_range_str。
df = df.groupby(['country', 'salary_range_str'])['salary'].mean().reset_index()
最后,將列旋轉salary_range_str到列。
df = pd.pivot_table(df, index='country', columns='salary_range_str', values='salary')
輸出
| 國家 | (0-5000] | (10000-15000] | (5000-10000] |
|---|---|---|---|
| 英國 | 2950.5 | 13077 | 7567.5 |
| 美國 | 3115.5 | 13651 | 8652 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/485461.html
上一篇:Linux跟蹤/trace_pipe檔案不可讀(debugfs)
下一篇:如何從檔案中獲取文本?
