2017-07-07 12 views
0

私はcsvファイルを開いてクリーンアップして得たデータフレームを持っています。 CSVファイルは次のようになります。パンダの述語に基づいてデータフレームの列を結合する

"1. Do some research on al-Khorezmi (also al-Khwarizmi), the man from whose name the word ""algorithm"" is derived. In particular, you should learn what the origins of the words ""algorithm"" and ""algebra"" have in common. ",,Understand,Procedural,Understand,Factual,Understand, 
3. Write down driving directions for going from your school to your home with the precision required from an algorithm's description. ,,Apply,,Apply,Factual,Remember, 
Write down a recipe for cooking your favorite dish with the precision required by an algorithm.,Factual,Apply,,,Factual,Remember, 
"Design an algorithm to find all the common elements in two sorted lists of numbers. For example, for the lists 2, 5, 5, 5 and 2, 2, 3, 5, 5, 7, the output should be 2, 5, 5. What is the maximum number of comparisons your algorithm makes if the lengths of the two given lists are m and n, respectively?",Procedural,Create,,Apply,,, 
"a. Find gcd(31415, 14142) by applying Euclid's algorithm.",Procedural,Apply,,Apply,,, 

このコードでそれをロード:

          Questions   A1 \ 
5  1. Do some research on al-Khorezmi (also al-Kh...   NaN 
6  3. Write down driving directions for going fr...   NaN 
7  Write down a recipe for cooking your favorite ...  Factual 
8  Design an algorithm to find all the common ele... Procedural 
9  a. Find gcd(31415, 14142) by applying Euclid'... Procedural  

       A2   B1   B2     C1 \ 
5  Understand Procedural Understand    Factual 
6    Apply   NaN  Apply    Factual 
7    Apply   NaN   NaN    Factual 
8   Create   NaN  Apply     NaN 
9    Apply   NaN  Apply     NaN 

        C2 
5   Understand 
6    Remember 
7    Remember 
8     NaN 
9     NaN 

列が['Questions', 'A1', 'A2', 'B1', 'B2', 'C1', 'C2']を以下のとおりです。

df = pd.read_csv('ADA.csv', names=['Questions', 'A1', 'A2', 'B1', 'B2', 'C1','C2']) 

これは私がこれまで持っているものです。これも同じになります

Label 1 = A1 if A1 has a value else B1 if B1 has a value else C1 

:私は何をする必要があるか

は、この述語に基づいて別のカラムLabel 2に一緒に1列Label 1と列['A2', 'B2', 'C2']に一緒に列['A1', 'B1', 'C1']を組み合わせることですラベル2:

Label 2 = A2 if A2 has a value else B2 if B2 has a value else C2 

与えられた入力の場合は、私はこのように見える2つの列を望みます

df['Label 1'] = df['A1'] if df['A1'] else df['B1'] if df['B1'] else df['C1'] 

しかし、それは、このエラーがスローされます:

Label 1  Label 2 
Procedural  Understand 
Factual  Apply 
Factual  Apply 
Procedural  Create 
Procedural  Apply 

は、これは私が試したものです

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

私はちょうど誰かが正しい方向に私をプッシュすることができた場合は、それが十分だろう。ありがとう。

+0

IIUC 'DF [ 'ラベル1'] =のDF [ 'A1'] [ 'A1'] DF場合をにnotnull()他のすべての()B1 '[DF '] if df [' B1 ']。notnull()。all()else df [' C1 '] '。 – shivsn

+0

コード、サンプルcsv、および出力を編集しました。 –

+0

@shivsnありがとう!それは働いています。その答えを公表してください。私は同意します。 –

答えて

1

これは動作するはずです:。。

df['Label 1'] = df['A1'] if df['A1'].notnull().all() \ 
       else df['B1'] if df['B1'].notnull().all() \ 
       else df['C1'] 
関連する問題