Py学习  »  Python

Python中的数据转换/格式化

user9292 • 2 年前 • 1236 次点击  

我有以下熊猫数据:

df = {'ID_1': [1,1,1,2,2,3,4,4,4,4],
      'ID_2': ['a', 'b', 'c', 'f', 'g', 'd', 'v', 'x', 'y', 'z']
     }
df = pd.DataFrame(df)
display(df)

ID_1    ID_2
1   a
1   b
1   c
2   f
2   g
3   d
4   v
4   x
4   y
4   z

每人 ID_1 ,我需要找到 ID_2 例如

什么时候 身份证1 =1,组合为 ab, ac, bc . 什么时候 身份证1 =2,组合为 fg .

注意,如果 身份证1 <2,那么这里就没有组合(参见 身份证1 =3,例如)。

最后,我需要将组合结果存储在 df2 详情如下:

enter image description here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129513
 
1236 次点击  
文章 [ 1 ]  |  最新文章 2 年前
Chris
Reply   •   1 楼
Chris    2 年前

单向使用 itertools.combinations :

from itertools import combinations

def comb_df(ser):
    return pd.DataFrame(list(combinations(ser, 2)), columns=["from", "to"])

new_df = df.groupby("ID_1")["ID_2"].apply(comb_df).reset_index(drop=True)

输出:

  from to
0    a  b
1    a  c
2    b  c
3    f  g
4    v  x
5    v  y
6    v  z
7    x  y
8    x  z
9    y  z