pandas删除一个单元格并向上移动列

时间:2017-11-19 17:15:41

标签: python pandas multiple-columns shift

我正在使用pandas和python。 我有一个列,其中第一个值为零。 列中还有其他零,但我也不想删除它们。 我想删除此单元格并将列向上移动1个位置。 如果很容易,我可以将第一个零作为一个空单元格,然后删除,但我找不到任何只是删除一个特定的单元格并移动列的其余部分。 到目前为止,我已经尝试过现有的堆栈溢出和quora加上github等的帮助,但我无法看到我正在寻找的任何东西。

1 个答案:

答案 0 :(得分:1)

我认为您首先需要shift,然后替换最后df = pd.DataFrame({'A':list('abcdef'), 'B':[4,5,4,5,5,4], 'C':[7,8,9,4,2,3], 'D':[1,3,5,7,1,0], 'E':[5,3,6,9,2,4], 'F':list('aaabbb')}) print (df) A B C D E F 0 a 4 7 1 5 a 1 b 5 8 3 3 a 2 c 4 9 5 6 a 3 d 5 4 7 9 b 4 e 5 2 1 2 b 5 f 4 3 0 4 b 值:

NaN

如果没有NaN仅使用fillna替换df['A'] = df['A'].shift(-1).fillna('AAA') print (df) A B C D E F 0 b 4 7 1 5 a 1 c 5 8 3 3 a 2 d 4 9 5 6 a 3 e 5 4 7 9 b 4 f 5 2 1 2 b 5 AAA 4 3 0 4 b

NaN

如果可能的话,列中有A个,那么按iloc设置最后一个值,get_locdf['A'] = df['A'].shift(-1) df.iloc[-1, df.columns.get_loc('A')] = 'AAA' print (df) A B C D E F 0 b 4 7 1 5 a 1 c 5 8 3 3 a 2 d 4 9 5 6 a 3 e 5 4 7 9 b 4 f 5 2 1 2 b 5 AAA 4 3 0 4 b 的函数返回位置:

{{1}}