2017-11-25 98 views
1

爲了簡單起見,可以說我有這個數據框。如何移動多列?熊貓,Python

Date   Open Close 
2016-01-01  100  129 
2016-01-02  198  193 
2016-01-03  103  102 
2016-01-04  102  109 

我不能列出所有列名,因爲有太多。那麼我怎樣才能移動除了其中兩個以外的所有列(日期&關閉)?我想將除了(日期&關閉)之外的所有列移回一行。

Date   Open Close 
2016-01-01  198  129 
2016-01-02  103  193 
2016-01-03  102  102 
2016-01-04  NaN  109 

回答

2

你可以不喜歡這樣創造一個面具列排除:

mask = ~(df.columns.isin(['Date','Close'])) 

cols_to_shift = df.columns[mask] 

df[cols_to_shift] = df.loc[:,mask].shift(-1) 

OR

df[cols_to_shift] = df[cols_to_shift].shift(-1) 

輸出:

  Date Open Close 
0 2016-01-01 198.0 129 
1 2016-01-02 103.0 193 
2 2016-01-03 102.0 102 
3 2016-01-04 NaN 109 
+0

2秒,真正: - ) – Wen

+0

很好的答案,但我對事端很好奇G。與':,mask'有什麼關係?一個元組可能,但是爲什麼?爲什麼? –

+0

@ManoelVilela你是對的,你也可以做df [cols_to_shift] = df [cols_to_shift] .shift(-1)。 –