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