如何使用熊猫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
类似地,我想对“值”列中的所有值执行此操作。
有什么建议吗?
答案 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)
这很适合我。