Python 数据框中的数据操作为每个组添加行
我想为下面的数据做数据操作。我想在下面为每个经理添加另一行,其中经理和工人是相同的。 我该怎么做 不是:经理的一切对工人来说都是一样的。这只是我的数据集的一个示例场景 多谢各位Python 数据框中的数据操作为每个组添加行,python,pandas,data-manipulation,Python,Pandas,Data Manipulation,我想为下面的数据做数据操作。我想在下面为每个经理添加另一行,其中经理和工人是相同的。 我该怎么做 不是:经理的一切对工人来说都是一样的。这只是我的数据集的一个示例场景 多谢各位 data = [['Tom','Aurora',4500,'Shelly','Chicago',43553] ,['Tom','Aurora',4500,'Alex','NewYork',43654] ,['Tom','Aurora',4500,'Kelly','Cincinnati',44674]
data = [['Tom','Aurora',4500,'Shelly','Chicago',43553]
,['Tom','Aurora',4500,'Alex','NewYork',43654]
,['Tom','Aurora',4500,'Kelly','Cincinnati',44674]
,['Jason','Charlotte',4567,'Jimmy','Boston',44984]
,['Jason','Charlotte',4567,'Aaron','Austin',44583]
]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Manager','Managercity',
'manager_id','Worker','WorkerCity','Worker_id'])
# print dataframe.
print(df)
下面是所需的数据集
Manager Managercity manager_id Worker WorkerCity Worker_id
Tom Aurora 4500 Shelly Chicago 43553
Tom Aurora 4500 Alex NewYork 43654
Tom Aurora 4500 Kelly Cincinnati 44674
Tom Aurora 4500 Tom Aurora 4500
Jason Charlotte 4567 Jimmy Boston 44984
Jason Charlotte 4567 Aaron Austin 44583
Jason Charlotte 4567 Jason Charlotte 4567
谢谢试试:
def添加(gr):
new_row=gr.iloc[0,:]
新行['Worker']=新行['Manager']
新行['Worker\u id']=新行['manager\u id']
返回gr.append(新行)
df=df.groupby('Manager')。应用(添加)。重置索引(drop=True)
您的示例数据不包含ManagerCity
,但您也可以使用添加函数中的new\u row['Worker\u city']=new\u row['Manager\u city']
进行设置。尝试:
def添加(gr):
new_row=gr.iloc[0,:]
新行['Worker']=新行['Manager']
新行['Worker\u id']=新行['manager\u id']
返回gr.append(新行)
df=df.groupby('Manager')。应用(添加)。重置索引(drop=True)
您的示例数据不包含
ManagerCity
,但您也可以使用添加函数上的new\u row['Worker\u city']=new\u row['Manager\u city']
对其进行设置。您可以使用pd.concat
和删除重复项,如下所示:
data = [['Tom','Aurora',4500,'Shelly','Chicago',43553]
,['Tom','Aurora',4500,'Alex','NewYork',43654]
,['Tom','Aurora',4500,'Kelly','Cincinnati',44674]
,['Jason','Charlotte',4567,'Jimmy','Boston',44984]
,['Jason','Charlotte',4567,'Aaron','Austin',44583]
]
# Create the pandas DataFrame
df_in = pd.DataFrame(data, columns = ['Manager','Managercity', 'manager_id','Worker','WorkerCity','Worker_id'])
df_managers = pd.DataFrame(np.tile(df_in[['Manager','Managercity','manager_id']].drop_duplicates(),2),columns=df_in.columns)
df_out = pd.concat([df_in, df_managers]).sort_values('Manager').reset_index(drop=True)
print(df_out)
输出:
Manager Managercity manager_id Worker WorkerCity Worker_id
0 Jason Charlotte 4567 Jimmy Boston 44984
1 Jason Charlotte 4567 Aaron Austin 44583
2 Jason Charlotte 4567 Jason Charlotte 4567
3 Tom Aurora 4500 Shelly Chicago 43553
4 Tom Aurora 4500 Alex NewYork 43654
5 Tom Aurora 4500 Kelly Cincinnati 44674
6 Tom Aurora 4500 Tom Aurora 4500
您可以像这样使用pd.concat
和删除重复项
:
data = [['Tom','Aurora',4500,'Shelly','Chicago',43553]
,['Tom','Aurora',4500,'Alex','NewYork',43654]
,['Tom','Aurora',4500,'Kelly','Cincinnati',44674]
,['Jason','Charlotte',4567,'Jimmy','Boston',44984]
,['Jason','Charlotte',4567,'Aaron','Austin',44583]
]
# Create the pandas DataFrame
df_in = pd.DataFrame(data, columns = ['Manager','Managercity', 'manager_id','Worker','WorkerCity','Worker_id'])
df_managers = pd.DataFrame(np.tile(df_in[['Manager','Managercity','manager_id']].drop_duplicates(),2),columns=df_in.columns)
df_out = pd.concat([df_in, df_managers]).sort_values('Manager').reset_index(drop=True)
print(df_out)
输出:
Manager Managercity manager_id Worker WorkerCity Worker_id
0 Jason Charlotte 4567 Jimmy Boston 44984
1 Jason Charlotte 4567 Aaron Austin 44583
2 Jason Charlotte 4567 Jason Charlotte 4567
3 Tom Aurora 4500 Shelly Chicago 43553
4 Tom Aurora 4500 Alex NewYork 43654
5 Tom Aurora 4500 Kelly Cincinnati 44674
6 Tom Aurora 4500 Tom Aurora 4500
请编辑数据框创建,因为没有管理器名称==工作者名称..的行。。我甚至不确定是否理解你的问题。要创建第四行吗?如果是,您如何定义worker city,因为我们不知道Tom city…应该添加到worker中,WorkerCity和worker_i您输入的数据框和所需的数据框是相同的?请编辑数据框创建,因为没有manager name==worker name.的行。。我甚至不确定是否理解你的问题。要创建第四行吗?如果是,由于我们不了解Tom city,您如何定义worker city…worker city和worker_I您输入的数据帧和所需的数据帧是相同的?抱歉,我编辑了数据集您的函数给了我一个错误键error:'Manager'@melik您应该在列名上使用大写或小写,否则会让人困惑,考虑到错误,您只需在我的代码中更改名称,如您在数据中定义的工人、经理,这样您就不会收到错误。很高兴我提供了帮助,happy codingSorry man我编辑了数据集你的函数给了我一个错误键error:“Manager”@melik你真的应该在列名上使用大写或小写,否则会很混乱,考虑到这个错误,你应该更改名称,比如Worker,经理
在我的代码上,因为您在数据中定义了它们,所以您不会收到错误很高兴我提供了帮助,很高兴编码