2016-12-06 7 views
0

私のdataframe1には、曜日ごとに1から7までの数値データを持つday列が含まれています。 1 - 月曜日、2 - 火曜日など。 このdayの列は飛行機の出発日です。別のデータフレームとスカラーの列値をPandas Pythonの関数に渡して、2番目のデータフレームに新しい列を作成しますか?

第2のdataframe2に新しい列dayOfBookingを作成する必要があります。これは、ある人がフライトを予約する日数とフライトの出発日に基づいて曜日を検索します。私はこの関数を書いたことについては

は:

def findDay(dayOfDeparture, beforeDay): 
    beforeDay = int(beforeDay) 
    beforeDay = beforeDay % 7 
    if((dayOfDeparture - beforeDay) > 0): 
     dayAns = currDay - beforeDay; 
    else: 
     dayAns = 7 - abs(dayOfDeparture - beforeDay) 
return(dayAns) 

私のような何かをしたい:iがスカラー値である

dataframe2["dayOfBooking"] = findDay(dataframe1["day"], i) 

findDayは、各行に単一の値をとる代わりに、dayの列全体をdataframe1にするのがわかります。

dataframe["sum"] = dataframe2["val1"] + dataframe2["val2"] 

EDITを::

我々は3列目は、それぞれの行には2つの他の列の合計になりたいときのように、これを達成する簡単な方法があり、私たちはこれを書くことができ、それを考え出しました。以下の回答と説明。

答えて

0
df2["colname"] = df.apply(lambda row: findDay(row['col'], i), axis = 1) 

我々は、特定の列の各行の値を抽出し、ユーザ定義関数に渡したい場合apply関数を使用しなければなりません。

axis = 1は、その列に対してすべての行の値が取得されていることを示します。

+2

こんにちは、あなたの質問に対する答えを見つけることをお祝いしますが、コードの行を投稿するのではなく、なぜ、どのように問題を解決するのかを説明してください。 –

関連する問題