Pandasフレーム・ワークを作って操作してみるのに、毎回、考えてサンプルを作るのは面倒なので、コピペできるようにメモしておきます。
Colomunsの追加、削除、値の検索などのテスト用に使ってください。
(元になるリストは日付データにしていて、タイムゾーンの変更もしてますが、参考まで。)
import datetime
import pytz
import pandas as pd
import numpy as np
import random
string_date='2019/05/19 04:00:00'
dt = datetime.datetime.strptime(string_date,'%Y/%m/%d %H:%M:%S')
dt_utc=dt.replace(tzinfo=pytz.UTC)
#元ネタのリスト用意
list1=[]
for i in range(10):
list1.append(dt_utc + datetime.timedelta(hours=-i))
list2 = [random.randint(200,299) for i in range(10)]
print(list1,list2)
#(参考)辞書の作り方
myDict = dict(zip(list1,list2))
print(myDict)
#pandasデータフレームワーク作成
date_pd = pd.DataFrame(data = [ [list1[i]] for i in range(len(list1))], columns=['Date'])
print(date_pd)
#pandasデータフレームワークのコラム追加
date_pd['Text']=([list2[i] for i in range(len(list2))])
print(date_pd)
#pandasデータフレームワークのコラムの確認
print(date_pd.columns)
#検索条件の作成
string_date='2019/05/19 04:00:00'
dt = datetime.datetime.strptime(string_date,'%Y/%m/%d %H:%M:%S')
dt_utc=dt.replace(tzinfo=pytz.UTC)
dt_start=list1[6]
print(dt_start)
dt_end=list1[3]
print(dt_end)
#リストの範囲を指定してcolumnsを追加
for i in range(len(date_pd)):
if date_pd.at[i,"Date"] < dt_end and date_pd.at[i,"Date"]> dt_start:
date_pd.at[i,'Check']=np.array('Checked')
print(date_pd)
#データフレームワークの範囲を指定して新しいデータフレームワーク作成
## df[df.A > 0] #これだと、全ての行を検索しTrue/Falseを返す。If文との併用が必要。
[10 rows x 3 columns]
print(date_pd.Date>dt_end)
#0 True
#1 True
#2 True
#3 False
#4 False
#****continue
#9 False
date_pd_selected=date_pd[date_pd.Date>dt_end] #新しいデータフレームワーク作成可能
print(date_pd_selected)
Date Text Check
0 2019-05-19 04:00:00+00:00 298 NaN
1 2019-05-19 03:00:00+00:00 247 NaN
2 2019-05-19 02:00:00+00:00 201 NaN
FutureWarning:converting timezone-aware DatetimeArray to timezone-naive ndarray with 'datetime64[ns]' dtype. In the future, this will return an ndarray with 'object' dtype where each element is a 'pandas.Timestamp' with the correct 'tz'.
To accept the future behavior, pass 'dtype=object'.
To keep the old behavior, pass 'dtype="datetime64[ns]"'.
result = np.asarray(values, dtype=dtype)
0 件のコメント:
コメントを投稿