2016-08-07 9 views
0

私はムービー名の列と3つの異なるソースからの評価である3つの他の列(A、B、Cと呼ぶ)を持つDataframeを持っています。 評価が1つの映画、3つのフォーラムの組み合わせの映画、評価のない映画が多数あります。 、B列が空の場合B. 他の3つの列のいずれかに基づいて新しい列を作成するにはどうすればよいですか?

  • から関連する評価を取得し、列が空の場合は、列が定格、使用A.
  • が関連付けられている場合

    1. :私は意志新しい列を作成したいです

      :C列が空の場合これは私がこれまでの私のコードで持っているものである

    「未評価」を返し、C.

  • から関連する評価を得ます3210

    私が手にエラーがある:私のデータフレームのVisualの

    ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0') 
    

    、ここnewyear.head()です:

    newyear dataframe

    私は、この値の誤差は、この問題を修正するために何を意味するのかわからないし、これが正しい方法であるかどうかを確認することもできます。

  • +2

    データフレームの小さなサンプル(画像ではなくテキスト)と予想される出力を投稿してください。 –

    答えて

    1

    あなたはあなたの本来の機能でratingを戻ってきている..しかしrating、ではない私はこのようなものだろう任意の列

    >>> df 
        A B C Genre Title Year 
    0 7 6 \N g1 m1 y1 
    1 \N 5 7 g2 m2 y2 
    2 \N \N \N g3 m3 y3 
    3 \N 4 1 g4 m4 y4 
    4 \N \N 3 g5 m5 y5 
    
    >>> def rating(row): 
        if row['A'] != r'\N': 
         return row['A'] 
        if row['B'] != r'\N': 
         return row['B'] 
        if row['C'] != r'\N': 
         return row['C'] 
        return 'Unrated' 
    
    >>> df['Rating'] = df.apply(rating, axis = 1) 
    >>> df 
        A B C Genre Title Year Rating 
    0 7 6 \N g1 m1 y1  7 
    1 \N 5 7 g2 m2 y2  5 
    2 \N \N \N g3 m3 y3 Unrated 
    3 \N 4 1 g4 m4 y4  4 
    4 \N \N 3 g5 m5 y5  3 
    
    +0

    ありがとうございました!私はpython関数defを使用してcolumn-rowからcolumn-rowに移動する方法を知りませんでしたので、これは非常に役に立ちました。 – Josh

    4

    の値である:

    df = df.replace('\\N', np.nan) # this requires import numpy as np 
    (df['Yahoo Rating'].fillna(df['Movie Mom Rating'] 
            .fillna(df['Critic Rating'] 
            .fillna("Unrated")))) 
    

    あなたのコードが動作しない理由は、newyear['Yahoo Rating'] != "\\N"がブール値の配列であるということです。あなたがここで言うことは、if [True, False, True, False]:のようなものです。それがあいまいさの原因です。あなたはそのような状態をどのように評価しますか?あなたはすべて真実なのか、それとも一人で十分なのか実行しますか?

    M. Klugerford explainedとして、行単位で評価されるように変更することができます(したがって、単一の値を返します)。しかし、行ごとの適用操作は一般的に遅く、パンダは欠落したデータを処理するための優れたツールを備えています。だから私はこれを提案している。

    +0

    これは非常に便利です!これを説明していただきありがとうございます。 – Josh

    関連する問題