如何创建包含列的所有组合的数据框?pandas python?

时间:2018-07-12 10:01:01

标签: python pandas pandas-groupby

如何使用熊猫python创建一个包含所有组合的数据框,该组合包含数据框中特定组(例如userid)的列(例如“用法”)值?

例如: 如果这是我拥有的数据帧,

user-id      serial-number       value     day

1   2   10      1
1   2   20      2
1   2   30      3
1   2   40      4
1   2   50      5
1   2   60      6
1   2   70      7
1   2   80      8
1   2   90      9
1   2   100    10
1   2   200    11
1   2   300    12
1   2   400    13
2   3   11      1
2   3   12      2
2   3   13      3
2   3   14      4
2   3   15      5
2   3   16      6
2   3   17      7
2   3   18      8

我需要结果数据框为: (“值”列中第一个值的组合)

user-id     serial-number       value       value1      day

1   2   10  10    1
1   2   10  20    1
1   2   10  30    1
1   2   10  40    1
1   2   10  50    1
1   2   10  60    1
1   2   10  70    1
1   2   10  80    1
1   2   10  90    1 
1   2   10  100   1 
1   2   10  200   1 
1   2   10  300   1
1   2   10  400   1
.
.
.

2   3   11  11    1
2   3   11  12    1
2   3   11  13    1
2   3   11  14    1
2   3   11  15    1
2   3   11  16    1
2   3   11  17    1
2   3   11  18    1

类似地,我想对“值”列中的所有值执行此操作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

subset = pd.DataFrame()

for _, i in test1.groupby(['user-id']):

                vals = i['value']
                val, val1 = zip(*product(vals, vals))
                vals_len = len(vals)

                def elongate(s, k):

                    return pd.concat([s] * k, ignore_index=True)

                res = pd.DataFrame({'user-id': i['user-id'].pipe(elongate, vals_len),
                                    'serial-number': i['serial-number'].pipe(elongate, vals_len),
                                    'value': i['value'].pipe(elongate, vals_len),
                                    'day': i['day'].pipe(elongate, vals_len),
                                    'value': val,
                                    'value1': val1
                                   })


                subtest = subtest.append(res)


print(subtest)

这很适合我。