在pandas数据帧中使用不同的值移动每个索引的行

时间:2018-05-22 12:12:40

标签: python pandas

以下是样本数据

sample_col = ["col1","col2","col3","col4", "col5"]
sample_data = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]
sample = pd.DataFrame(data = data_data, columns = data_col)

sample

   col1  col2  col3  col4 col5
 0  1    2     3     4    5
 1  6    7     8     9    10
 2  11   12    13    14   15
 3  16   17    18    19   20

m = [0,1,2,1]

我需要将数据框样本中的每一行移动到列表m中的相应值。

输出应该看起来像这样

   col1  col2  col3  col4 col5
 0  1    2     3     4    5
 1  NaN  6     7     8    9
 2  NaN  NaN   11    12   13
 3  NaN  16    17    18   19

我知道我可以使用sample.iloc[i].shift(m[i])通过应用循环逐个实现我想要的东西。但是我有一个非常大的数据集,需要永远完成。

那么有更好的方法来实现我想要做的事情吗? 欢迎任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用布尔切片来为每个班次操作选择感兴趣的行。如果set的{​​{1}}很大,但比你的速度快,那么它仍会很慢。

m