我有一个时间序列 Dataframe 填充0和不同数量的列,我想用100从第一行和第一列开始对角线填充值。我可以使用下面的问题中提出的解决方案,但它在最后一列的值填充后停止。Set values on the diagonal of pandas.DataFrame
我怎样才能让它在所有行上重复呢?
下面是我的 Dataframe :
A B
2020-05-02 23:00:00+00:00 0.0 0.0
2020-05-03 00:00:00+00:00 0.0 0.0
2020-05-03 01:00:00+00:00 0.0 0.0
2020-05-03 02:00:00+00:00 0.0 0.0
2020-05-03 03:00:00+00:00 0.0 0.0
但是正如您所看到的,使用Numpy fill_diagonal并不能完成这项工作。
import numpy as np
np.fill_diagonal(df.values, 0)
A B
2020-05-02 23:00:00+00:00 100.0 0.0
2020-05-03 00:00:00+00:00 0.0 100.0
2020-05-03 01:00:00+00:00 0.0 0.0
2020-05-03 02:00:00+00:00 0.0 0.0
2020-05-03 03:00:00+00:00 0.0 0.0
当有2列时,我希望是这样的:
A B
2020-05-02 23:00:00+00:00 100.0 0.0
2020-05-03 00:00:00+00:00 0.0 100.0
2020-05-03 01:00:00+00:00 100.0 0.0
2020-05-03 02:00:00+00:00 0.0 100.0
2020-05-03 03:00:00+00:00 100.0 0.0
2条答案
按热度按时间krugob8w1#
下面是一个基于numpy的方法,根据列数和切片数重新整形,并返回一个给定的值:
其他一些例子:
tp5buhyn2#
下面是使用
np.identity
和np.tile
的方法