Pandas将空列添加到DataFrame

时间:2020-02-23 14:42:11  来源:igfitidea点击:

在本教程中,我们将看到如何将空列添加到DataFrame Pandas。

有多种方法可以将空列添加到DataFrame。

使用assignment赋值语句

我们可以使用assignment来在Python中创建新列。

import numpy as np
import pandas as pd
df = pd.DataFrame({'Name': ['Vaibhav','Andy','Romi'], "Age": [23,34,28]})
print("-------Original Dataframe-------\n",df)
 
df['Gender'] = ''
df['Department'] = np.nan
print("-------Updated Dataframe-------\n",df)

输出:

-------Original Dataframe------
       Name  Age
0  Vaibhav   23
1     Andy   34
2     Romi   28
-------Updated Dataframe------
       Name  Age Gender  Department
0  Vaibhav   23                NaN
1     Andy   34                NaN
2     Romi   28                NaN

使用reindex()方法

我们可以使用 DataFrame.reindex()在Python中创建新列的方法。

import pandas as pd
emp_df = pd.DataFrame({'Name': ['Rohan','Martin','Mary'], "Age": [28,39,21]})
print("-------Original Dataframe-------\n",emp_df)
 
emp_df = emp_df.reindex(columns=emp_df.columns.tolist() + ['Gender','Department'])
print("-------Updated Dataframe-------\n",emp_df)

输出:

-------Original Dataframe------
      Name  Age
0   Rohan   28
1  Martin   39
2    Mary   21
-------Updated Dataframe------
      Name  Age  Gender  Department
0   Rohan   28     NaN         NaN
1  Martin   39     NaN         NaN
2    Mary   21     NaN         NaN

如果Pandas 版本大于 0.20.0,我们可以更改如下突出显示的行:

emp_df = emp_df.reindex(emp_df.columns.tolist() + ['Gender','Department'],axis=1)

使用INSERT()方法

我们可以使用 DataFrame.insert()在Python中创建新列的方法。
我们可以使用 insert()在任何索引处添加列的方法。
以下是插入()方法的签名。

DataFrame.insert(index, Column Header, initial value)

插入 Gender第一个索引列,我们可以使用:

emp_df.insert(1,'Gender','')
import pandas as pd
emp_df = pd.DataFrame({'Name': ['Rohan','Martin','Mary'], "Age": [28,39,21]})
print("-------Original Dataframe-------\n",emp_df)
 
emp_df.insert(1,'Gender','')
print("-------Updated Dataframe-------\n",emp_df)

输出:

-------Original Dataframe------
      Name  Age
0   Rohan   28
1  Martin   39
2    Mary   21
-------Updated Dataframe------
      Name Gender  Age
0   Rohan          28
1  Martin          39
2    Mary          21