2017-09-15 42 views
1

我有一個數據幀MXN並希望以類似的方式翻轉一列列出翻蓋如單個列:反轉的數據幀

list1 = [1,2,3,4] 
list2 = list1[::1] 

所以 列表2看起來是這樣的:[4,3,2,1]

如何將類似於DataFrame的東西應用於列,但保留所有行和其他列的順序,以便僅翻轉單列中的值:

eg

DF1 =

col1 col2 
1 cat  1 
2 dog  2 
3 fish 3 
4 bird 4 
5 mouse 5 

到DF2

col1 col2 
1 cat  5 
2 dog  4 
3 fish 3 
4 bird 2 
5 mouse 1 
+1

'df2 = df1.assign(c ol2 = df1 ['col2']。iloc [:: - 1])' –

+1

'df1.assign(col2 = df1.col2.loc [:: - 1] .reset_index(drop = True))'如果您不重置指數,那麼您最終可能會得到相同的數據幀。 – Abdou

回答

2

這樣做的最簡單的方法是:

df.col2 = df.col2.values[::-1] 
df 

    col1 col2 
1 cat  5 
2 dog  4 
3 fish  3 
4 bird  2 
5 mouse  1 

或者,使用df.assign(返回一個拷貝,效率不高的就地分配):

df2 = df.assign(col2=df.col2.values[::-1]) 
df2 

    col1 col2 
1 cat  5 
2 dog  4 
3 fish  3 
4 bird  2 
5 mouse  1 
+0

我已經使用了選項1:df.col2 = df.col2.values [:: - 1],它的工作原理。我想我不必重置索引?謝謝您的回答。 – BlueTomato

+0

@BlueTomato你當然不會。沒問題。 –

0

嘗試concating給你的數據幀。 。

DF1 [ 'COL2']祿[:: - 1]

它應該工作。

0

可以做:

>>> df1 
    0 1 2 
0 1 2 3 
1 4 5 6 
2 7 8 9 
>>> df1[0]=df1[0].loc[::-1].reset_index(drop=True) 
>>> df1 
    0 1 2 
0 7 2 3 
1 4 5 6 
2 1 8 9