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