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

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

新規登録して質問してみよう
ただいま回答率
85.35%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

Q&A

解決済

1回答

777閲覧

pythonで関数の結果をデータフレームに入れたい。

退会済みユーザー

退会済みユーザー

総合スコア0

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

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

0グッド

0クリップ

投稿2020/10/01 05:54

前提・実現したいこと

pythonで関数の結果をデータフレームに入れたい。

発生している問題・エラーメッセージ

j = 0 while j < 10 : def azimuth(x1, y1, xi, yi): xi = input_sheet_df.iloc[j,8] yi = input_sheet_df.iloc[j,7] #iはデータセットの緯度経度 # Radian角に修正 _x1, _y1, _xi, _yi = x1*pi/180, y1*pi/180, xi*pi/180, yi*pi/180 Δx = _xi - _x1 _y = sin(Δx) _x = cos(_y1) * tan(_yi) - sin(_y1) * cos(Δx) psi = atan2(_y, _x) * 180 / pi if psi < 0: return 360 + atan2(_y, _x) * 180 / pi else: return atan2(_y, _x) * 180 / pi def distance(x1, y1, xi, yi, r): xi = input_sheet_df.iloc[j,8] yi = input_sheet_df.iloc[j,7] _x1, _y1, _xi, _yi = x1*pi/180, y1*pi/180, xi*pi/180, yi*pi/180 Δx = _xi - _x1 val = sin(_y1) * sin(_yi) + cos(_y1) * cos(_yi) * cos(Δx) return r * acos(val) #1はタイムズスクエアの緯度経度 x1 = -73.987402 y1 = 40.756314 r = 6378.137e3 dis= distance(x1, y1, xi, yi, r) / 1e3 # kmに変換 print("{0:.3f} ".format(dis)) j += 1

上記のprint関数で得たい結果は表示することができましたが、
データフレームに入れようとすると上手く表示できません。

###試したこと

distance = pd.DataFrame() distance['distance'] = ["{0:.3f} ".format(dis)]

こうするとj=9の関数disの値のみが入ってしまいます。
j=0~8までの結果もデータフレームに入れたい場合どうすればよいのでしょうか。

補足情報(FW/ツールのバージョンなど)

python

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

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

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

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

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

meg_

2020/10/01 06:35

下記コードは質問のコードのどこに追加したのですか? > distance = pd.DataFrame() distance['distance'] = ["{0:.3f} ".format(dis)]
aokikenichi

2020/10/01 10:14

例示のコードはエラーで動かなくないですか? xiが定義されてないまま使われてますね --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-9-60772fa8e551> in <module>() 27 y1 = 40.756314 28 r = 6378.137e3 ---> 29 dis= distance(x1, y1, xi, yi, r) / 1e3 # kmに変換 30 print("{0:.3f} ".format(dis)) 31 j += 1 NameError: name 'xi' is not defined
guest

回答1

0

ベストアンサー

append() メソッドを使う方法が良いと思います。
下記が使用例です。

Python

1import pandas as pd 2 3distance = pd.DataFrame(columns=['distance']) 4 5for i in range(5): 6 distance = distance.append({'distance': i}, ignore_index=True) 7 8print(distance) 9

上記の実行結果

distance 0 0 1 1 2 2 3 3 4 4

投稿2020/10/01 12:28

takutakuya

総合スコア979

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問