考虑下面的数据帧,

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

最佳答案

这是笛卡尔积。运用理解力重建你的DataFrame

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)

关于python - 将 Pandas 中的行相乘并添加到迭代中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52446046/

10-12 22:17