Dataframe是Python中pandas模塊的一個重要數據結構,它類似於電子表格或資料庫表格。通常,我們需要將新的列添加到Dataframe中以進一步分析或處理數據。本文將介紹如何使用Python快速為Dataframe添加新列的方法。
一、使用賦值語句添加新列
最簡單的方法是使用賦值語句將新列添加到Dataframe中。假設我們的Dataframe名為df,要添加一列名為”salary”:
import pandas as pd
data = {'Name': ['Amy', 'Bob', 'Charlie', 'David'],
'Age': [20, 25, 30, 35]}
df = pd.DataFrame(data)
df['salary'] = [4000, 5000, 6000, 7000]
print(df)
上面的代碼將輸出一個新的Dataframe,其中包含新添加的列”salary”:
Name Age salary
0 Amy 20 4000
1 Bob 25 5000
2 Charlie 30 6000
3 David 35 7000
我們也可以使用已有的列計算新的列並將其添加到Dataframe中:
df['income'] = df['salary'] * 12
print(df)
這將輸出一個新的Dataframe,其中包含一個新的列”income”:
Name Age salary income
0 Amy 20 4000 48000
1 Bob 25 5000 60000
2 Charlie 30 6000 72000
3 David 35 7000 84000
二、使用Dataframe.insert()方法添加新列
另一個添加新列的方法是使用pandas.DataFrame.insert()方法。該方法接受三個參數:列索引位置、新列名稱和新列數據。下面的代碼展示了如何使用該方法將新列添加到Dataframe中:
import pandas as pd
data = {'Name': ['Amy', 'Bob', 'Charlie', 'David'],
'Age': [20, 25, 30, 35]}
df = pd.DataFrame(data)
new_col = [4000, 5000, 6000, 7000]
df.insert(2, 'salary', new_col)
print(df)
上面的代碼將輸出一個新的Dataframe,其中包含新添加的列”salary”:
Name Age salary
0 Amy 20 4000
1 Bob 25 5000
2 Charlie 30 6000
3 David 35 7000
如果我們需要添加的新列已經存在,那麼我們可以使用same_name參數將其替換:
new_col = [8000, 9000, 10000, 11000]
df.insert(2, 'salary', new_col, True)
print(df)
這將輸出一個新的Dataframe,新添加的列”salary”已經被替換:
Name Age salary
0 Amy 20 8000
1 Bob 25 9000
2 Charlie 30 10000
3 David 35 11000
三、使用Dataframe.assign()方法添加新列
Dataframe.assign()方法可以用來將新列添加到Dataframe中。它接受一個列名稱和新列數據作為參數,並返回一個新的Dataframe。下面的代碼展示了如何使用assign()方法將新列添加到Dataframe中:
import pandas as pd
data = {'Name': ['Amy', 'Bob', 'Charlie', 'David'],
'Age': [20, 25, 30, 35]}
df = pd.DataFrame(data)
new_col = [4000, 5000, 6000, 7000]
df = df.assign(salary=new_col)
print(df)
上面的代碼將輸出一個新的Dataframe,其中包含新添加的列”salary”:
Name Age salary
0 Amy 20 4000
1 Bob 25 5000
2 Charlie 30 6000
3 David 35 7000
我們也可以同時添加多個新列:
new_cols = {'salary': [4000, 5000, 6000, 7000],
'income': [48000, 60000, 72000, 84000]}
df = df.assign(**new_cols)
print(df)
這將輸出一個新的Dataframe,其中包含兩個新的列”salary”和”income”:
Name Age salary income
0 Amy 20 4000 48000
1 Bob 25 5000 60000
2 Charlie 30 6000 72000
3 David 35 7000 84000
四、使用apply()和lambda函數添加新列
apply()方法可以用來對Dataframe中的每一行或列執行某個函數,並將結果作為一個新列添加到Dataframe中。lambda函數可以用來定義匿名函數。下面的代碼展示了如何使用apply()方法和lambda函數將新列添加到Dataframe中:
import pandas as pd
data = {'Name': ['Amy', 'Bob', 'Charlie', 'David'],
'Age': [20, 25, 30, 35]}
df = pd.DataFrame(data)
df['salary'] = df.apply(lambda row: 5000 + row['Age'] * 100, axis=1)
print(df)
上面的代碼將輸出一個新的Dataframe,其中包含新添加的列”salary”:
Name Age salary
0 Amy 20 7000
1 Bob 25 8000
2 Charlie 30 9000
3 David 35 10000
在lambda函數中,我們使用了每個行的年齡信息計算了新列”salary”的值。
五、使用numpy向量化運算添加新列
numpy中的向量化運算可以讓代碼更高效地處理大型數據集,提高運算速度。下面的代碼展示了如何使用numpy的向量化運算將新列添加到Dataframe中:
import pandas as pd
import numpy as np
data = {'Name': ['Amy', 'Bob', 'Charlie', 'David'],
'Age': [20, 25, 30, 35]}
df = pd.DataFrame(data)
df['salary'] = np.multiply(df['Age'], 100) + 3000
print(df)
上面的代碼將輸出一個新的Dataframe,其中包含新添加的列”salary”:
Name Age salary
0 Amy 20 5000
1 Bob 25 5500
2 Charlie 30 6000
3 David 35 6500
我們使用numpy中的multiply()函數將Dataframe中的”Age”列乘以100,並加上3000來計算新列”salary”的值。
總結
本文介紹了幾種使用Python快速為Dataframe添加新列的方法:賦值語句、Dataframe.insert()方法、Dataframe.assign()方法、apply()和lambda函數以及numpy的向量化運算。這些方法都可以通過一些簡單的代碼行將新列添加到Dataframe中,讓我們更方便的處理數據。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/289432.html