【发布时间】:2022-08-14 00:05:22
【问题描述】:
我有这段代码生成的那种数据
import pandas as pd
def multichoose(n,k):
if k < 0 or n < 0: return \"Error\"
if not k: return [[0]*n]
if not n: return []
if n == 1: return [[k]]
return [[0]+val for val in multichoose(n-1,k)] + \\
[[val[0]+1]+val[1:] for val in multichoose(n,k-1)]
states=[]
for i in range(0,3):
states=states+multichoose(3,i)
df_states = pd.DataFrame(states,columns=[\'x1\',\'x2\',\'x3\'])
df_states[\'cumsum\']=df_states[\'x1\']+df_states[\'x2\']+df_states[\'x3\']
x1 x2 x3 cumsum
0 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
0 0 2 2
0 1 1 2
0 2 0 2
1 0 1 2
1 1 0 2
2 0 0 2
我想用这个计算来扩展我的数据
# For example for the first row
# in range of cumsum value + 2
[[x, y] for x in range(df_states[[\'cumsum\']].iloc[0][0]+2) for y in range(df_states[[\'cumsum\']].iloc[0][0]+2)]
#output
[[0, 0], [0, 1], [1, 0], [1, 1]]
所以我的预期结果是
x1 x2 x3 cumsum a1 a2
0 0 0 0 0 0
0 0 0 0 0 1
0 0 0 0 1 0
0 0 0 0 1 1
0 0 1 1 0 0
0 0 1 1 0 1
0 0 1 1 0 2
0 0 1 1 1 0
0 0 1 1 1 1
0 0 1 1 1 2
0 0 1 1 2 0
0 0 1 1 2 1
0 0 1 1 2 2
. . . . . .
. . . . . .
在最终结果中,我需要为所有行实现此扩展
感谢您的帮助<3