Python 通过输入键连接多个分组数据帧
我一个接一个地做了我想做的手术。他们给了我想要的结果。因此,为了完成这项工作,我想用我用来分组数据帧的同一个键来连接这些分组数据帧。现在我得到了一个“***KeyError:'key'”,因为分组的数据帧没有允许我执行合并操作的“key”列。 我在熊猫身上迈出了第一步。是否有一种方法可以将键列保留在groupby中,以便我可以执行合并,或者有一种更简单的方法可以实现所需输出中显示的相同结果Python 通过输入键连接多个分组数据帧,python,pandas,Python,Pandas,我一个接一个地做了我想做的手术。他们给了我想要的结果。因此,为了完成这项工作,我想用我用来分组数据帧的同一个键来连接这些分组数据帧。现在我得到了一个“***KeyError:'key'”,因为分组的数据帧没有允许我执行合并操作的“key”列。 我在熊猫身上迈出了第一步。是否有一种方法可以将键列保留在groupby中,以便我可以执行合并,或者有一种更简单的方法可以实现所需输出中显示的相同结果 import pandas as pd raw_data = { 'key': ['a', 'a
import pandas as pd
raw_data = {
'key': ['a', 'a', 'b', 'c', 'c', 'c', 'd', 'a', 'b', 'c'],
'type_op': ['OP1', 'OP2', 'OP3', 'OP2', 'OP1', 'OP3', 'OP2', None, 'OP1', 'OP3'],
'type_xp': ['XP2', 'XP2', None, 'XP3', 'XP1', None, 'XP1', 'XP3', None, 'XP3'],
}
df = pd.DataFrame.from_dict(raw_data)
total_op1 = df[df['type_op']=='OP1'][['type_op', 'key']].groupby('key').agg(['count'])
total_op2 = df[df['type_op']=='OP2'][['type_op', 'key']].groupby('key').agg(['count'])
total_op3 = df[df['type_op']=='OP3'][['type_op', 'key']].groupby('key').agg(['count'])
total_opn = df[df['type_op'].isnull()][['type_op', 'key']].groupby('key').agg(['count'])
total_xp1 = df[df['type_xp']=='XP1'][['type_xp', 'key']].groupby('key').agg(['count'])
total_xp2 = df[df['type_xp']=='XP2'][['type_xp', 'key']].groupby('key').agg(['count'])
total_xp3 = df[df['type_xp']=='XP3'][['type_xp', 'key']].groupby('key').agg(['count'])
total_xpn = df[df['type_xp'].isnull()][['type_xp', 'key']].groupby('key').agg(['count'])
dn = df.drop_duplicates(subset='key')['key']
pd.merge(dn, total_op1, on='key', how='outer')
# ...
# the output I want...
# key TOP1 TOP2 TOP3 TOPN TXP1 TXP2 TXP3 TXPN TOTAL
# a 1 1 NaN 1 NaN 2 1 NaN 6
# b 1 1 1 NaN 1 NaN NaN 2 6
# c 1 NaN 2 NaN 1 NaN 2 1 7
# d NaN 1 NaN NaN NaN NaN NaN NaN 1
您可以将param
作为_index=False
传递给,看起来您还可以通过连接两个轴而不是8个groupby来实现所需的结果。可能会省下一点工作。