質問するログイン新規登録

Q&A

解決済

2回答

414閲覧

csvファイルを読み込んで、その要素値を使って計算した値を、新しい列に書き加えたいです

yyicp

総合スコア104

Python

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

2グッド

1クリップ

投稿2026/02/05 06:03

2

1

実現したいこと

test.csvは以下のようなファイルです。

x y 0 1 2 3 4 5

この値をx列の値を順にx0, x1, x2とします。

今、xの隣に、z列として、(x0+x1)/2、(x1+x2)/2を書き込みたいです。
つまり、欲しい結果は以下の通りです。

x y z 0 1 1 2 3 3 4 5

これを実現するにはどのようなコードを書けば良いでしょうか。

該当のソースコード

python

1import pandas as pd 2 3df = pd.read_csv('test.csv')

試したこと

要素値にアクセスすることが必要かなと思いました。それにはilocを使えば良いことが分かりました。

a = df.iloc[1,0] #2
melian, Li emily👍を押しています

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

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

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

guest

回答2

0

ベストアンサー

shift() メソッドを使いますが、z列の最後の要素が NaN になるため、z列のデータタイプ(dtype)はfloat型になります。

python

1import pandas as pd 2 3df = pd.read_csv('test.csv') 4 5df['z'] = (df['x'] + df['x'].shift(-1))/2 6print(df) 7 8# x y z 9# 0 0 1 1.0 10# 1 2 3 3.0 11# 2 4 5 NaN

投稿2026/02/05 06:32

melian

総合スコア21695

yyicp

2026/02/05 06:35

できました。 どうもありがとうございました。
YellowGreen

2026/02/05 07:11

保存前に df["z"] = df["z"].astype("Int64") としておくと整数として保存できますよ
melian

2026/02/05 07:35

ご指摘、ありがとうございます。Nullable integer data type(pandas.Int64Dtype()など)に関しては現時点では実験的に導入されているものなので、その点に留意して使用するとよいかと思います。 Nullable integer data type — pandas 3.0.0 documentation https://pandas.pydata.org/docs/user_guide/integer_na.html > IntegerArray is currently experimental. Its API or implementation may change without warning.
yyicp

2026/02/05 07:36

補足ありがとうございました。
guest

0

既に解決済みなので御参考です。

示された式は 'x' 列の(区関数2の)移動平均を求めているので,rolling() メソッド を用いることもできます。下記に記述例を示します。

Python

1import pandas as pd 2 3df = pd.DataFrame({'x': [0, 2, 4], 'y': [1, 3, 5]}) 4 5df['z'] = df['x'].rolling(2).mean().shift(-1) 6 7print(df) 8# x y z 9# 0 0 1 1.0 10# 1 2 3 3.0 11# 2 4 5 NaN

投稿2026/02/10 12:16

編集2026/02/11 23:49
little_street

総合スコア553

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問