簡體   English   中英

為什么我無法將現有數據添加到新的 dataframe 列中?

[英]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 的列的值時,它們被設置為各自的索引。

而且您的MaleFemale指數明顯不同,因為它們來自初始 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM