前提・実現したいこと
お世話になります。
下記のような数式があったとして、
python
1import pandas as pd 2data= pd.DataFrame({"existing_column":[1,2,3,4,5],"sample_colmuns":[4,5,6,7,8]}) 3 4def some_function(row): 5 return pd.Series([row["existing_column"]*2, row["sample_colmuns"]/2])
pandas で条件に一致した列にのみ、値を入れたいと考えております。
(※例 existing_columnが3以上の場合に新しい行「new_column1」「new_column2」に値を入れる など)
発生している問題・エラーメッセージ
全ての列に対して処理を行う場合は下記でうまくいくのですが
data[['new_column1', 'new_column2']] = data.apply(some_function2,axis=1)
existing_column | sample_colmuns | new_column1 | new_column2 | |
---|---|---|---|---|
0 | 1 | 4 | 0.5 | 2.0 |
1 | 2 | 5 | 1.0 | 4.0 |
2 | 3 | 6 | 1.5 | 6.0 |
3 | 4 | 7 | 2.0 | 8.0 |
4 | 5 | 8 | 2.5 | 10.0 |
列を指定して行う処理の場合はうまく行きません
data.loc[data["existing_column"] > 3,['new_column1', 'new_columns2']] = / data.loc[data["existing_column"] > 3,['existing_column']].apply(some_function2,axis=1)
結果
existing_column | sample_colmuns | new_column1 | new_column2 | |
---|---|---|---|---|
0 | 1 | 4 | 0 | 0 |
1 | 2 | 5 | 0 | 0 |
2 | 3 | 6 | 0 | 0 |
3 | 4 | 7 | NaN | NaN |
4 | 5 | 8 | NaN | NaN |
大変初歩的な質問で恐縮なのですが、どのようにすればほしい結果が得られるのかご教示いただけますと幸いでございます
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/15 05:45