我有一个有3列的Dataframe df。A、B和C
A B C
2 4 4
5 2 5
6 9 5 我的目标是使用itertools.combinations查找所有不重复的列对,并将第一列对放入一个DataFrame中,将第二列对放入另一列中。所以所有的对都会得到A:B,A:C,B:C。
因此,第一个数据帧df1将具有这些列对中的第一个:
df=A A B
2 4 4
5 5 2
6 5 9第二个df2:
B C C
4 4 4
3 5 5
9 5 5我正在尝试使用itertools做一些事情,比如:
for cola, colb in itertools.combinations(df, 2):
df1[cola]=cola
df2[colb]=colb我知道这没有任何意义,但我可以将每一列更改为一个列表,然后迭代一个列表列表,然后将每个列表附加到一个列表A和B,然后将该列表转换回一个Dataframe,但是这样我就缺少了头。我尝试将头文件添加到列表中,但当我尝试将其重做回DataFrame时,索引似乎关闭了,我似乎无法修复它。所以我只是想看看是否有一种方法可以使用标题来迭代处理整个列。
发布于 2016-05-31 07:45:59
使用zip函数对要在每个DataFrame中单独使用的列进行分组,然后使用pandas.concat构造新的DataFrames:
from itertools import combinations
df1_cols, df2_cols = zip(*combinations(df.columns,2))
df1 = pd.concat([df[col] for col in df1_cols],axis=1)
df2 = pd.concat([df[col] for col in df2_cols],axis=1)https://stackoverflow.com/questions/37531215
复制相似问题