🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

Q&A

解決済

1回答

376閲覧

pandasのDataFrameで特定の列に書かれた数値を、上から○段目までかを選択してから四則演算で算出したい

mamegorou0083

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

0グッド

0クリップ

投稿2021/02/25 11:04

前提・実現したいこと

調べても方法が見当たらなかったのでこちらへ質問をさせていただきます。

pandasのDataframeで読み込んだCSVの表にC1,C2,C3という列が存在していると仮定して、その中からC2に載っている数値の『上から2番目』までの数値のみを選択して四則演算で結果を表示したい場合はどのような関数を入力すればよいのでしょうか?

拙い文章で申し訳ありませんが、ご回答頂けましたら幸いです。

(ソースコードにCSV内の表のイメージを記載しておきます)

該当のソースコード

# C1 C2 C3 # 0 24 24 31 # 1 18 38 24 # 2 19 11 15

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

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

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

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

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

TakaiY

2021/02/25 11:10

「C2に載っている数値の『上から2番目』までの数値のみを選択して四則演算」をしたいということですが、具体的な例を示してください。 例のデータであれば、"24 + 38" のような計算をやりたいということですか?
mamegorou0083

2021/02/26 00:30

はい、おっしゃる通りでございます。
guest

回答1

0

ベストアンサー

C2に載っている数値の『上から2番目』までの数値のみを選択して四則演算で結果を表示したい

質問に文字通り答えるとこうなります。

python

1>>> print(df) 2 C1 C2 C3 30 24 24 31 41 18 38 24 52 19 11 15 6>>> print(df['C2'][0] + df['C2'][1]) 762 8>>> print(df['C2'][0] - df['C2'][1]) 9-14 10>>> print(df['C2'][0] * df['C2'][1]) 11912 12>>> print(df['C2'][0] / df['C2'][1]) 130.631578947368421 14>>>

タイトルが「上から○段目」なのですね。
足し算なら以下です。

python

1>>> print(df) 2 C1 C2 C3 30 24 24 31 41 18 38 24 52 19 11 15 63 35 18 21 7>>> 8>>> def sum_cn(df, column, n): 9... return sum(df[column].values[:n]) 10... 11>>> print(sum_cn(df, 'C2', 2)) 1262 13>>> print(sum_cn(df, 'C2', 3)) 1473 15>>> print(sum_cn(df, 'C2', 4)) 1691 17>>>

掛け算なら以下です。

python

1>>> import functools 2>>> import operator 3>>> 4>>> print(df) 5 C1 C2 C3 60 24 24 31 71 18 38 24 82 19 11 15 93 35 18 21 10>>> 11>>> def pi_cn(df, column, n): 12... return functools.reduce(operator.mul, df[column].values[:n], 1) 13... 14>>> print(pi_cn(df, 'C2', 2)) 15912 16>>> print(pi_cn(df, 'C2', 3)) 1710032 18>>> print(pi_cn(df, 'C2', 4)) 19180576

投稿2021/02/25 11:43

編集2021/02/25 13:36
ppaul

総合スコア24670

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

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

mamegorou0083

2021/02/26 00:36

上記のコードを試してみたところ、正しく処理が行えました! ご教示くださり本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問