📅  最后修改于: 2023-12-03 14:45:02.928000             🧑  作者: Mango
在数据分析中,有时候需要对两列数据进行组合,以查看它们之间的关系或者进行进一步分析。Pandas提供了一些函数来执行这个任务。
使用 itertools.combinations()
函数可以获取两列的所有组合。例如,有以下数据集:
import pandas as pd
import itertools
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
print(df)
输出:
A B
0 1 a
1 2 b
2 3 c
然后我们可以通过以下代码获取它们的所有组合:
combinations = itertools.combinations(df.values.tolist(), 2)
combinations_list = [list(item) for item in combinations]
print(combinations_list)
输出:
[[[1, 'a'], [2, 'b']],
[[1, 'a'], [3, 'c']],
[[2, 'b'], [3, 'c']]]
这将返回由所有两列组合的子列表组成的列表。
使用 merge()
函数将两个DataFrame合并在一起,也可以获取两列的所有组合。例如,有以下数据集:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df2 = pd.DataFrame({'C': [4, 5, 6], 'D': ['d', 'e', 'f']})
print(df1)
print(df2)
输出:
A B
0 1 a
1 2 b
2 3 c
C D
0 4 d
1 5 e
2 6 f
然后我们可以通过以下代码获取它们的所有组合:
combinations = pd.merge(df1.assign(key=1), df2.assign(key=1), on='key').drop('key', 1)
print(combinations)
输出:
A B C D
0 1 a 4 d
1 1 a 5 e
2 1 a 6 f
3 2 b 4 d
4 2 b 5 e
5 2 b 6 f
6 3 c 4 d
7 3 c 5 e
8 3 c 6 f
这将返回由所有两列组合的DataFrame。
以上两种方法是获取两列数据所有组合的两种方法。使用 itertools.combinations()
函数仅适用于两列数据,对于多列数据,需要逐个列使用该函数。使用 merge()
函数更加灵活,适用于任意多列数据。