Python 如何在两列的唯一对上运行循环

Python 如何在两列的唯一对上运行循环,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有这个数据框 数据: 我想在原点+目的地和t_类型的唯一对上运行函数。 之前我只是在t_类型上运行函数,所以我这样做了: open_data = data[data['t_type']=="Open"].reset_index(drop=True) all_data = data[data['t_type'] == "All"].reset_index(drop=True) open = loader(open_data,open_trucks) #open_trucks and al

我有这个数据框

数据:

我想在原点+目的地和t_类型的唯一对上运行函数。 之前我只是在t_类型上运行函数,所以我这样做了:

open_data = data[data['t_type']=="Open"].reset_index(drop=True)
all_data = data[data['t_type'] == "All"].reset_index(drop=True)
open = loader(open_data,open_trucks)    #open_trucks and all_trucks are
all = loader(all_data,all_trucks)       # from another dataframe
我从中检索到了唯一的对:

data.groupby(['Origin','Destination']).size().reset_index()
输出:

Origin  Destination   0
Delhi   Doon          7
Delhi   Gurgaon       1
Delhi   Mumbai        8
.
.
.
如何基于O+D从数据帧中提取数据?如果我重复这一点,我很抱歉,但是这里的数据隔离是两次的。。一次在O+D上,然后在t_类型上

我在想这个伪密码

for unique_pair in pairs:
    open_data = something(which I don't know how to extract)
    all_data = something(ditto)
    run the function and store the output
数据:

我相信你需要:

for i, df in data.groupby(['Origin','Destination']):
#if need processing by 3 columns 
#for i, df in data.groupby(['t_type', 'Origin', 'Destination']):
    print (df)
或使用自定义功能:

def func(df):
    print (df)
    #processing per groups

    return df

df1 = data.groupby(['Origin','Destination']).apply(func)

是否可以在您的答案中添加
print(数据[['t_-type','origin','destination']])
的输出,以便我们可以复制更好的答案?我们不能复制图片。此外,您希望在这些唯一的数据对上运行什么样的函数?因此,您希望选择两个类别的数据对?为什么不使用groupby调用对它们进行迭代并执行计算<代码>用于名称,在数据中分组。groupby(['Origin','Destination']):。或者有什么我遗漏了吗?你肯定我会添加数据,而且我想运行的函数是name loader,它在上面的代码中。如果你只想使用loader函数,你可以使用类似
data.groupby(['t_type','Origin','Destination'])。apply(loader)
@Erfan我已经添加了数据,我有一个要调用的函数main。我可以在聊天时给你看吗?也许这会帮助你更好地帮助我?
def func(df):
    print (df)
    #processing per groups

    return df

df1 = data.groupby(['Origin','Destination']).apply(func)