📜  连接 Pandas 数据帧时如何添加标识符列?

📅  最后修改于: 2022-05-13 01:55:43.327000             🧑  作者: Mango

连接 Pandas 数据帧时如何添加标识符列?

在处理某些数据时,我们通常希望连接两个或更多数据帧。因此,当我们连接这些数据帧时,我们实际上需要提供一个标识符列来识别连接的数据帧。在本文中,我们将借助示例了解如何做到这一点。

示例 1:

要添加标识符列,我们需要将标识符指定为 concat()函数中参数“keys”的列表,这会创建一个新的多索引数据帧,其中连接两个数据帧。现在我们将使用reset_index将多索引数据帧转换为常规 pandas 数据帧。

Python3
import pandas as pd
import numpy as np
 
 
dict = {'Name':['Martha', 'Tim', 'Rob', 'Georgia'],
        'Maths':[87, 91, 97, 95],
        'Science':[83, 99, 84, 76]
       }
 
df1 = pd.DataFrame(dict)
 
dict = {'Name':['Amy', 'Maddy'],
        'Maths':[89, 90],
        'Science':[93, 81]
       }
 
df2 = pd.DataFrame(dict)
 
# Concatenating two dataframes
df = pd.concat([df1,df2],keys=['t1', 't2'])
display(df)
 
df = pd.concat([df1,df2], keys=['t1', 't2']).reset_index()
display(df)


Python3
import pandas as pd
import numpy as np
 
 
dict = {'Name': ['Martha', 'Tim', 'Rob', 'Georgia'],
        'Maths': [87, 91, 97, 95],
        'Science': [83, 99, 84, 76]
        }
 
df1 = pd.DataFrame(dict)
 
dict = {'Name': ['Amy', 'Maddy'],
        'Maths': [89, 90],
        'Science': [93, 81]
        }
 
df2 = pd.DataFrame(dict)
 
dict = {'Name': ['Rob', 'Rick', 'Anish'],
        'Maths': [89, 90, 87],
        'Science': [93, 81, 90]
        }
 
df3 = pd.DataFrame(dict)
 
# Concatenating Dataframes
df = pd.concat([df1, df2, df3],
               keys=['t1', 't2', 't3'])
display(df)
 
df = pd.concat([df1, df2, df3],
               keys=['t1', 't2', 't3']).reset_index()
display(df)



输出:

在输出中,我们可以看到一列包含每个数据帧的标识符,其中“t1”代表第一个数据帧,“t2”代表第二个数据帧。

示例 2:

我们可以对任意数量的数据帧进行类似的操作。在此示例中,我们将组合三个数据帧。

Python3

import pandas as pd
import numpy as np
 
 
dict = {'Name': ['Martha', 'Tim', 'Rob', 'Georgia'],
        'Maths': [87, 91, 97, 95],
        'Science': [83, 99, 84, 76]
        }
 
df1 = pd.DataFrame(dict)
 
dict = {'Name': ['Amy', 'Maddy'],
        'Maths': [89, 90],
        'Science': [93, 81]
        }
 
df2 = pd.DataFrame(dict)
 
dict = {'Name': ['Rob', 'Rick', 'Anish'],
        'Maths': [89, 90, 87],
        'Science': [93, 81, 90]
        }
 
df3 = pd.DataFrame(dict)
 
# Concatenating Dataframes
df = pd.concat([df1, df2, df3],
               keys=['t1', 't2', 't3'])
display(df)
 
df = pd.concat([df1, df2, df3],
               keys=['t1', 't2', 't3']).reset_index()
display(df)


输出:

在输出中,我们可以看到一列包含每个数据帧的标识符,其中“t1”、“t2”和“t3”分别代表第一个、第二个和第三个数据帧。