Python 在pandas中多行并添加到迭代中

Python 在pandas中多行并添加到迭代中,python,pandas,Python,Pandas,考虑以下数据帧 df = pd.DataFrame({'ID' : [1,2,3,4,5], 'Week' : ['WK1', 'WK2', 'WK3', 'WK4', 'WK5']}) print(df) ID Week 0 1 WK1 1 2 WK2 2 3 WK3 3 4 WK4 4 5 WK5 当周数增加+1时,循环和复制每一行的最有吸引力的方式是什么 因此,基于前两个值,这将是我期望的结果 ID Week 0 1

考虑以下数据帧

df = pd.DataFrame({'ID' : [1,2,3,4,5], 'Week' : ['WK1', 'WK2', 'WK3', 'WK4', 'WK5']})
print(df)
        ID  Week
0   1   WK1
1   2   WK2
2   3   WK3
3   4   WK4
4   5   WK5
当周数增加+1时,循环和复制每一行的最有吸引力的方式是什么

因此,基于前两个值,这将是我期望的结果

   ID   Week
0   1   WK1
1   1   WK2
2   1   WK3
3   1   WK4
4   1   WK5
5   2   WK1
6   2   WK2
7   2   WK3
8   2   WK4
9   2   WK5

这是笛卡尔积。使用理解并重新构建您的
数据帧

pd.DataFrame([(i, w) for i in df.ID for w in df.Week], columns=df.columns)

    ID Week
0    1  WK1
1    1  WK2
2    1  WK3
3    1  WK4
4    1  WK5
5    2  WK1
6    2  WK2
7    2  WK3
8    2  WK4
9    2  WK5
10   3  WK1
11   3  WK2
12   3  WK3
13   3  WK4
14   3  WK5
15   4  WK1
16   4  WK2
17   4  WK3
18   4  WK4
19   4  WK5
20   5  WK1
21   5  WK2
22   5  WK3
23   5  WK4
24   5  WK5

# empty list
a = []

for i in df.ID:
    for w in df.Week:
        a.append((i, w))

pd.DataFrame(a, columns=df.columns)

unstack
bfill
ffill一起使用

df.set_index('ID',append=True).Week.unstack().ffill(1).bfill(1).stack().sort_index(level=1).reset_index(level=1)
Out[1025]: 
   ID    0
0   1  WK1
1   1  WK2
2   1  WK3
3   1  WK4
4   1  WK5
0   2  WK1
1   2  WK2
2   2  WK3
3   2  WK4
4   2  WK5
0   3  WK1
1   3  WK2
2   3  WK3
3   3  WK4
4   3  WK5
0   4  WK1
1   4  WK2
2   4  WK3
3   4  WK4
4   4  WK5
0   5  WK1
1   5  WK2
2   5  WK3
3   5  WK4
4   5  WK5

这在一个简单的(er)for循环中可能吗?我只是想了解所有的步骤,我使用了df.append,但无法计算出增量。如果我不理解你的职业主义观点,我将不得不从哲学中拿出我的旧大学笔记!“我想,所以我是”并不是我所指的笛卡尔的贡献。他也是一位数学家,发明了x,y轴,我们称之为笛卡尔平面。笛卡尔积是多个集合的所有组合的集合。也被称为交叉积。我在理解中使用双
for
实现所有组合。我确信有一种方法。我怀疑使用
enumerate
会有所帮助(或其他很多东西)。问题是我不太确定你在问什么。阅读并提出一个新问题,说明你想要什么,并解释你是如何达到目的的。我相信你的问题会很快得到回答。为了提供更多关于我的困惑的细节,我不知道是什么定义了每行应该迭代多少次。我是否需要为某个专栏的新价值重新启动iteraration?此外,如果我能更好地理解你的意思,我可能还会向你指出已经存在的问题和答案。