2017-01-15 62 views
3

私はPandasデータフレームをPythonで持っています。データフレームの内容はhereです。私は "シングル"列の最初のアルファベットの場合を少し修正しました。ここで私が持っているものです。ケースを無視したPandas DataFrameソート

import pandas as pd 
df = pd.read_csv('test.csv') 
print df 

Position      Artist     Single    Year  Weeks 
     1    Frankie Laine    I Believe    1953 18 weeks 
     2     Bryan Adams   I Do It for You    1991 16 weeks 
     3     Wet Wet Wet  love Is All Around    1994 15 weeks 
     4 Drake (feat. Wizkid & Kyla)    One Dance    2016 15 weeks 
     5      Queen  bohemian Rhapsody 1975/76 & 1991/92 14 weeks 
     6     Slim Whitman    Rose Marie    1955 11 weeks 
     7    Whitney Houston i Will Always Love You    1992 10 weeks 

私は(a〜z)の昇順にシングル列でソートしたいと思います。実行すると

df.sort_values(by='Single',inplace=True) 

大文字と小文字を組み合わせることはできないようです。ここに私が得るものは次のとおりです。

Position      Artist     Single    Year  Weeks 
     1    Frankie Laine    I Believe    1953 18 weeks 
     2     Bryan Adams   I Do It for You    1991 16 weeks 
     4 Drake (feat. Wizkid & Kyla)    One Dance    2016 15 weeks 
     6     Slim Whitman    Rose Marie    1955 11 weeks 
     5      Queen  bohemian Rhapsody 1975/76 & 1991/92 14 weeks 
     7    Whitney Houston i Will Always Love You    1992 10 weeks 
     3     Wet Wet Wet  love Is All Around    1994 15 weeks 

したがって、最初に大文字でソートし、次に小文字で別のソートを実行します。私は単一列の開始アルファベットの大文字と小文字を区別せずに、並べ替えソートが必要です。ソート後に「ボヘミアン・ラプソディー」の行が間違った場所にあります。それは最初でなければなりません。代わりにソート後5行目として表示されます。

列のテキストの大文字小文字を無視して、Pandas DataFrameを並べ替える方法はありますか?

答えて

4

あなたが上位/下位にすべての文字列を変換することができますケースを無視してargsort()を呼び出し、データフレームを並べ替えるためのインデックス値をシングルの場合は無視します。

df.iloc[df.Single.str.lower().argsort()] 

enter image description here

+0

素晴らしい!ありがとう。ちょうど私が欲しいもの。 –

1

その列ですべて大文字でソートSingleのコピーを作成します。

df["Single.Upper"] = df["Single"].str.upper() 
df.sort_values(by="Single.Upper", inplace=True) 

をあなたは後から列を削除することができます。

del df["Single.Upper"] 
+0

ありがとう。私はこれをやろうと考えていましたが、新しい列を作成したくありませんでした。私は 'by = df [" Single "]。str.upper()'を使って失敗した。余分な列を作成したり削除したりせずにこれを行う方法はありますか? –

+0

はい。 Psidomの答えを参照してください。 – DyZ

+0

ああ、はい、私は答えを見た。私は大文字に変換するオプション(あなたのように)を追加の列を削除せずに行うことができるかどうか疑問に思っていました。 –