Python 如何在两列的唯一对上运行循环
我有这个数据框 数据: 我想在原点+目的地和t_类型的唯一对上运行函数。 之前我只是在t_类型上运行函数,所以我这样做了: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
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)