Python 对整个数据集重复相同的过程
给定数据帧df:Python 对整个数据集重复相同的过程,python,pandas,Python,Pandas,给定数据帧df: 1 1.1 2 2.1 ... 1600 1600.1 0 45.1024 7.2365 45.8769 7.1937 34.1072 8.4643 1 43.1024 8.9645 32.5798 7.7500 33.1072 9.3564 2 42.1024 6.
1 1.1 2 2.1 ... 1600 1600.1
0 45.1024 7.2365 45.8769 7.1937 34.1072 8.4643
1 43.1024 8.9645 32.5798 7.7500 33.1072 9.3564
2 42.1024 6.7498 25.1027 7.3496 26.1072 6.3665
我执行了以下操作:我选择了第一个(1和1.1)
耦合并创建了一个数组。然后我对以下几对(2和2.1)
做了同样的操作
及
最后的手术是:
Q_final = list(zip(Q[0], Q[1]))
P_final = list(zip(P[0], P[1]))
现在我想对整个数据集执行此操作。但这需要很多时间。你知道如何在短时间内重复这个吗
编辑
毕竟我在做什么
df = similaritymeasures.frechet_dist(P_final, Q_final)
所以我想得到一个包含所有列组合的新数据集(可能)您可能不想创建1600个单独的变量。将其存储在容器中,如
dict
,其中键引用原始列句柄:
{idx: list(zip(gp.iloc[:, 0], gp.iloc[:, 1]))
for idx, gp in df.groupby(df.columns.str.split('.').str[0], axis=1)}
# or
{idx: [*map(tuple, gp.to_numpy())]
for idx, gp in df.groupby(df.columns.str.split('.').str[0], axis=1)}
样品
一种简单的方法是跨轴1使用
agg
def f(s):
s = iter(s)
return list(zip(s,s))
agg = df.agg(f,1)
然后使用.str
进行检索。比如说,
agg.str[0] # P_final
agg.str[1] # Q_final
.
.
.
此外,如果您需要每两列,则可以跨
axis=1
执行groupby
df.groupby(np.arange(len(df.columns))//2, axis=1).apply(lambda s: s.agg(list,1))
def f(s):
s = iter(s)
return list(zip(s,s))
agg = df.agg(f,1)
agg.str[0] # P_final
agg.str[1] # Q_final
.
.
.
df.groupby(np.arange(len(df.columns))//2, axis=1).apply(lambda s: s.agg(list,1))