【发布时间】:2020-03-06 14:31:41
【问题描述】:
我希望实现的是能够标准化我的值,以便它们都从任意零天开始。想象一下下面的 DataFrame:
df = pd.DataFrame(np.array([[1, 0, 0], [4, 5, 0], [7, 8, 9], [7, 8, 9], [4, 5, 0], [7, 8, 9]]),
columns=['a', 'b', 'c'],
index = ['1/1/2000', '1/1/2001', '1/1/2002', '1/1/2003', '1/1/2004', '1/1/2005'])
结果如下:
a b c
1/1/2000 1 0 0
1/1/2001 4 5 0
1/1/2002 7 8 9
1/1/2003 7 8 9
1/1/2004 4 5 0
1/1/2005 7 8 9
我想要实现的是在每列中找到第一个非零值,并将该列中的值移动到索引零。所以最终的 dataFrame 看起来像这样:
a b c
1/1/2000 1 5 9
1/1/2001 4 8 9
1/1/2002 7 8 0
1/1/2003 7 5 9
1/1/2004 4 8 0
1/1/2005 7 0 0
我尝试使用轮班,我可以使用这样的东西:
df.b = df.b.shift(periods = -1, fill_value = 0)
但目前我不知道任何不使用 for 循环等对 pandas 友好的方法。
欣赏是否有人可以帮助最好地找到第一个非零值,然后将这些值正确地移动到索引零。
【问题讨论】: