前提
下記のDatabase(### 一番最初のDatabase)に新規に列を作成する関数を導入しました。その後新規に導入した
列"C"には
「もしBよりAの方が大きいならば、列CにはAを代入する、そうでない場合は列CにBを代入する 」というコード
列"D"には
「もしAよりBの方が大きいならば、列CにはAを代入する、そうでない場合は列CにBを代入する 」
というコードを関数にして実装したいと思っています。
解決したい事
・「問題のコード」に実装を試みたコードがあるのですが、def文において2回"if"を使う方法(文法的用法)が分かりません。
恐らく調べてくれば、出で来る内容だとは思うのですが、自分の調査能力では見つける事ができなかったので、
もしコードで回答するのが煩わしかったら参考になりそうなサイトのリンクを貼っていただくだけで幸いです。
・これに関しては別段解決しなければいけない問題ではないのですが、
「def Fill_columuns_axis」 「def Fill_columuns_axis」のコードを一本に纏める事って可能ですか?
一番最初のDatabase
Python3
1df1 = pd.DataFrame({'A':['100', '200', '300',"400"], 'B':['110', '150', '300',"380"], 2# A B 3# 100 110 4# 200 150 5# 300 300 6# 400 380 7 8def Make_columuns_axis (Columnuns_axis_df): 9 Columnuns_axis_df['C'] = int() 10 Columnuns_axis_df['D'] = int() 11 return Columnuns_axis_df 12 13Make_columuns_axis(df1) 14# A B C D 15# 100 110 16# 200 150 17# 300 300 18# 400 380
問題のコード
Python3
1#上記のコードで作成した列に値を入れていく 2def Fill_columuns_axis (Fill_axis_df): 3 if Fill_axis_df["A"] >= Fill_axis_df["B"]: 4 Fill_axis_df['C'] = Fill_axis_df["A"] 5 else: Fill_axis_df['C'] = Fill_axis_df["B"] 6return Fill_axis_df 7 8 if Fill_axis_df["A"] <= Fill_axis_df["B"]: 9 Fill_axis_df['D'] = Fill_axis_df["A"] 10 else: Fill_axis_df['D'] = Fill_axis_df["B"] 11return Fill_axis_df
発生している問題・エラーメッセージ
File "<ipython-input-16-d2fcc712e7a1>", line 7 if Fill_axis_df["A"] <= Fill_axis_df["B"]: ^ IndentationError: unexpected indent
補足情報(FW/ツールのバージョンなど)
Anaconda
Python
Pycharm
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
追記
Python3
1df1 = pd.DataFrame({'A':['100', '200', '300',"400"], 'B':['110', '150', '300',"380"]}) 2 3#新たに新規のdfを作成して行の長さをdf1と同一にしている 4df2 = pd.DataFrame({ 'C' : range(len(df1))}) 5 6#"iterrows"関数を使用してdf1の行に対して処理を行おうとしている。 7#for文の"idx"と"val"は"index"と"value"を指す固有名詞? この仕様に関しては見つけられなかった。 8 9for idx, val in df1.iterrows(): 10 11#"print(idx)"でdf1のインデックスを表示 12 13 print(idx) 14 if val.A > val.B: 15 16#"df2.loc[idx,c]"でdf2の列Cを指定 17 18 df2.loc[idx,['C']] = val.A 19 elif val.A < val.B: 20 df2.loc[idx,['C']] = val.B 21 else: 22 df2.loc[idx,['C']] = val.B 23df = pd.concat([df1, df2], axis=1) 24df
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/23 13:53