私はcsvから読み込まれ、無関係なデータを持つデータフレームを持っています。 1つの列、SystemStartを評価することで、無関係なものを判断します。 その行のSystemStartより低い日付値の見出しを持つ列にある行ごとのデータはすべて、nanに設定されます。たとえば、index = 'one'のSystemStartの日付は '2016-1-5'で、pd.date_rangeが設定されているときは、値は設定されません。 index = 'three'は '2016-1-7'なので、元のデータを置き換える2つの値があります。データフレームの行に操作を適用するにはどうすればよいですか?
私は行単位で行け、すべての列でnp.nan値を投げることができますが、それは遅いです。より速い方法がありますか?
私は以下の代表的なデータフレームを作成しました。反復操作なしで同じ結果を得ることを望んでいます。どんな助けでも大歓迎です。以下は
import pandas as pd
import numpy as np
start_date = '2016-1-05'
end_date = '2016-1-7'
dates = pd.date_range(start_date, end_date, freq='D')
dt_dates = pd.to_datetime(dates, unit='D')
ind = ['one', 'two', 'three']
df = pd.DataFrame(np.random.randint(0,100,size=(3, 3)), columns = dt_dates, index = ind)
df['SystemStart'] = pd.to_datetime(['2016-1-5', '2016-1-6', '2016-1-7'])
print 'Initial Dataframe: \n', df
for msn in df.index:
zero_date_range = pd.date_range(start_date, df.loc[msn,'SystemStart'] - pd.Timedelta(days=1), freq='D')
# we set zeroes for all columns in the index element in question - this is a horribly slow way to do this
df.loc[msn, zero_date_range] = np.NaN
print '\nAltered Dataframe: \n', df
初期と変化した、DFの出力です:私は
Initial Dataframe:
2016-01-05 00:00:00 2016-01-06 00:00:00 2016-01-07 00:00:00 \
one 24 23 65
two 21 91 59
three 62 77 2
SystemStart
one 2016-01-05
two 2016-01-06
three 2016-01-07
Altered Dataframe:
2016-01-05 00:00:00 2016-01-06 00:00:00 2016-01-07 00:00:00 \
one 24.0 23.0 65
two NaN 91.0 59
three NaN NaN 2
SystemStart
one 2016-01-05
two 2016-01-06
three 2016-01-07
こんにちは!私はパンダの放送事業に関する良いガイドを教えていただけますか?私はナンシーのガイドを読んだが、パンダ自体にその知識を伝えるのに手を差し伸べている。私はアシストに感謝します。 –
@InderJalli実験、検索、質問。それが私が与えることができる最高のアドバイスです。 – piRSquared