如何在拼接熊猫数据帧时添加标识符列?

原文:https://www . geesforgeks . org/how-add-identifier-column-when-concation-pandas-data frames/

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

例 1:

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

Python 3

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)

输出:

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

例 2:

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

Python 3

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)

# Concating 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”分别代表第一、第二和第三个数据帧。