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?此外,如果我能更好地理解你的意思,我可能还会向你指出已经存在的问题和答案。