2017-01-11 1 views
1

は、私は次のような何かをしたい:パンダの列で辞書を使用しますか?

df['Day'] = df['Day'].apply(lambda x: x + myDict[df['Month']]), 

どこ

myDict={2:3,4:1,6:1,9:1,11:1,1:0,3:0,5:0,7:0,8:0,10:0,12:0}. 

私はそれが特定の月の場合、月の日に日数を追加してやっています。例:2月で月が28の場合、3を加えて31を得る。

しかし、私は本当にdf ['Month']のインデックスにmyDictを適用したいので、これは機能しません。月の列に直接。

私のコマンドに対してiterrowsをインラインで実行できますか?私はこれが、データフレーム全体を反復する大きなforループよりも、パンダを使ってより速く実行できると考えています。

+0

をやっていることを得ることはありませんので、あなたは、あなたのデータフレームの一例を示すことができますか? – chrisaycock

+0

何が入っているのかは分かりますが、顧客データを表示することはできません。私は平日であれ週末であれ、月の何日であれ、どの製品、どの部門、金額を費やしているかなど、月を持っています。それは文字列と整数です。あなたがより多くの情報を必要とするかどうか私に教えてください。 – lasingallday

+0

私は、df ['Month'] *の*索引があなたの質問に何を意味するのか把握しようとしています。このようなインデックスはどのように見えるのですか? – chrisaycock

答えて

2

試してみてください。

df.Day += df.Month.map(myDict) 

または:
私は本当にあなたが

df.Day += df.index.to_series().map(myDict) 
+1

OP状態:*私は本当に月の列ではなく、df ['Month']のインデックスにmyDictを適用したいと思います。*これらのインデックスが何であるか把握しようとしています。 – chrisaycock

+0

@chrisaycock thx ...私は誤って読んだ – piRSquared

+0

df.Day + df.Month.map(myDict)の元の答えは各行を正しく変更します。私はdf.index.to_series()。map(myDict)はdf.Monthへの参照がないので動作しないと思います!インデックスでは、列のすべての行の値を扱うことになっていました。私はその指標が適切な用語であるかどうかわかりません。 – lasingallday

関連する問題