質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

358閲覧

python pandasのif文

west_urad

総合スコア13

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/07/08 06:20

編集2022/07/08 06:32

イメージ説明
1.実現したいこと
・画像は、野菜の摂取量が記載されたデータです。
各値を3倍し、350g以上の場合をTrue、350以下をFalseとします。

・Trueの場合、0.2をプラス
Falseかつ、野菜の摂取量が0の場合、-0.6をプラス
Falseかつ、野菜の摂取量が1~349の場合、-0.3をプラス

2.ソースコード
from google.colab import auth
from google.auth import default
import gspread

auth.authenticate_user()
creds, _ = default()
gc = gspread.authorize(creds)
worksheet = gc.open_by_key('任意のkey').sheet1
import pandas as pd

rows = worksheet.get_all_values()
header = rows.pop(0)
df = pd.DataFrame.from_records(rows, columns=header)#indexの''は自由に変更
df = df.where(df != '')# 空文字を None に変換しておく

df["野菜"] = df["Vegetables[g]"].astype(int) * 3
vegetables_label = df["野菜"]>=350.0
df["野菜"] = vegetables_label #TrueかFalse

pre_score = 1
veg_score = 0.0
v = df["野菜"].astype(int) #True,Falseを1,0にする
if(v == 1).all():
veg_score = 0.2
else:
if(df["Vegetables[g]"].astype(int) * 3 == 0).all():
veg_score = -0.6
else:
veg_score = -0.3

df["0か1"] = v
df["スコア"] = float(pre_score + veg_score)

3.結果
0か1 スコア
0   0.7
0   0.7
0   0.7
1   0.7
0   0.7
0   0.7
となっています。v=1の時、本来なら1.2になりますが0.7になります。
どうすればいいかわからないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1import pandas as pd 2import io 3 4csv_data = ''' 5Vegetables[g] 629 70 8116 9189 1054 1133 12''' 13df = pd.read_csv(io.StringIO(csv_data)) 14 15# 16df["野菜"] = df["Vegetables[g]"].astype(int)*3 >= 350 17v = df["野菜"] 18pre_score = 1 19df.loc[v, "スコア"] = pre_score + 0.2 20df.loc[(~v)&(df["Vegetables[g]"]==0), "スコア"] = pre_score - 0.6 21df.loc[(~v)&(df["Vegetables[g]"].between(1, 349)), "スコア"] = pre_score - 0.3 22df["0か1"] = v * 1 23 24print(df)
Vegetables[g]野菜スコア0か1
29False0.70
0False0.40
116False0.70
189True1.21
54False0.70
33False0.70

投稿2022/07/08 07:07

編集2022/07/08 07:11
melian

総合スコア19803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問