[英]Why am I unable to add an existing data into a new dataframe column?
我有一個包含 250 個員工姓名、性別和薪水的數據集。 我正在嘗試創建一個新的 dataframe 來簡單地分別“提取”男性和女性的工資。 此 dataframe 將有 2 列,一列是男性工資,另一列是女性工資。
從這個 dataframe,我想用 matplotlib 創建一個並排的箱線圖來分析是否存在任何性別工資差距。
# Import libraries
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.read_csv("TMA_Data.csv")
df.head()
#Filter out female employees
df_female = df[(df.Gender == "F")]
df_female.head()
#Filter out male employees
df_male = df[(df.Gender == "M ")]
df_male.head()
#Create new dataframe with only salaries
df2 = pd.DataFrame(columns = ["Male Salaries", "Female Salaries"])
print(df2)
#Assign Male Salaries column
df2["Male Salaries"] = df_male["Salary"]
df2.head() #This works
Output:
Male Salaries Female Salaries
3 93046 NaN
7 66808 NaN
10 46998 NaN
16 74312 NaN
17 50178 NaN
#Assign Female Salaries column (THIS IS WHERE THE PROBLEM LIES)
df2["Female Salaries"] = df_female["Salary"]
df2.head()
Output:
Male Salaries Female Salaries
3 93046 NaN
7 66808 NaN
10 46998 NaN
16 74312 NaN
17 50178 NaN
為什么我無法添加女性工資的值(似乎沒有添加)? 此外,鑒於我的最終目標是創建兩個並排的箱線圖,請隨意建議我是否可以以完全不同的方式來做到這一點。 非常感謝!
編輯:數據集預覽:數據集內容
使用.reset_index
:
df2 = pd.DataFrame(columns = ["Male Salaries", "Female Salaries"])
df2["Male Salaries"] = df_male["Salary"].reset_index(drop=True)
df2["Female Salaries"] = df_female["Salary"].reset_index(drop=True)
當設置 dataframe 的列的值時,它們被設置為各自的索引。
而且您的Male
和Female
指數明顯不同,因為它們來自初始 dataframe 的不同行。
df = pd.DataFrame([[1], [2], [3]])
df
0
0 1
1 2
2 3
按預期工作:
df[1] = [4, 5, 6]
df
0 1
0 1 4
1 2 5
2 3 6
不像您預期的那樣工作:
df[2] = pd.Series([4, 5, 6], index=[1, 0, 999])
df
0 1 2
0 1 4 5.0
1 2 5 4.0
2 3 6 NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.