[解決済み] 空のPandas DataFrameを作成し、それを埋める?
2022-03-14 11:28:48
質問
pandasのDataFrameのドキュメントから始めています。 http://pandas.pydata.org/pandas-docs/stable/dsintro.html
時系列的な計算でDataFrameに繰り返し値を入れたいのですが、どうすればいいですか? 基本的には、A列、B列、タイムスタンプ行でDataFrameを初期化したいのですが、すべて0かすべてNaNです。
次に、初期値を追加して、このデータの上で、前の行から新しい行を計算するんだ。
row[A][t] = row[A][t-1]+1
といった具合です。
現在、以下のようなコードを使っていますが、ちょっと不格好なので、DataFrameを直接使ってこれを行う方法、あるいは一般的にもっと良い方法があるはずだと感じています。 注:Python 2.7を使用しています。
import datetime as dt
import pandas as pd
import scipy as s
if __name__ == '__main__':
base = dt.datetime.today().date()
dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]
dates.sort()
valdict = {}
symbols = ['A','B', 'C']
for symb in symbols:
valdict[symb] = pd.Series( s.zeros( len(dates)), dates )
for thedate in dates:
if thedate > dates[0]:
for symb in valdict:
valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]
print valdict
解決方法は?
以下は、いくつかの提案です。
使用方法
date_range
をインデックスに使用します。
import datetime
import pandas as pd
import numpy as np
todays_date = datetime.datetime.now().date()
index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D')
columns = ['A','B', 'C']
注:空の DataFrame を作成することもできます (
NaN
を書くだけです。
df_ = pd.DataFrame(index=index, columns=columns)
df_ = df_.fillna(0) # with 0s rather than NaNs
データに対してこのような計算を行うには、numpyの配列を使用します。
data = np.array([np.arange(10)]*3).T
したがって、DataFrameを作成することができます。
In [10]: df = pd.DataFrame(data, index=index, columns=columns)
In [11]: df
Out[11]:
A B C
2012-11-29 0 0 0
2012-11-30 1 1 1
2012-12-01 2 2 2
2012-12-02 3 3 3
2012-12-03 4 4 4
2012-12-04 5 5 5
2012-12-05 6 6 6
2012-12-06 7 7 7
2012-12-07 8 8 8
2012-12-08 9 9 9
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PicgoのイメージベッドツールをPythonで実装する
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み] 一行ずつ追加してPandas Dataframeを作成する
-
[解決済み] 辞書のリストをpandasのDataFrameに変換する
-
[解決済み] pandasのinplace=Trueを理解する