输入如下.
Out[178]:
group value
0 A a
1 A b
2 A c
3 A d
4 B c
5 C d
6 C e
7 C a
Run Code Online (Sandbox Code Playgroud)
对于此输入,我想为每个组创建一个组合并创建一个DataFrame.我该怎么做?
我想得到的输出:
Out[180]:
group 0 1
0 A a b
1 A a c
2 A a d
3 A b c
4 A b d
5 A c d
0 C d e
1 C d a
2 C e a
Run Code Online (Sandbox Code Playgroud)
使用combinations在修真
from itertools import combinations
pd.DataFrame([
[n, x, y]
for n, g in df.groupby('group').value
for x, y in combinations(g, 2)
], columns=['group', 0, 1])
group 0 1
0 A a b
1 A a c
2 A a d
3 A b c
4 A b d
5 A c d
6 C d e
7 C d a
8 C e a
Run Code Online (Sandbox Code Playgroud)
groupby与lambda函数一起使用和combinations:
from itertools import combinations
df = (df.groupby('group')['value'].apply(lambda x: pd.DataFrame(list(combinations(x,2))))
.reset_index(level=1, drop=True)
.reset_index())
print (df)
group 0 1
0 A a b
1 A a c
2 A a d
3 A b c
4 A b d
5 A c d
6 C d e
7 C d a
8 C e a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |