通常、パンダのitertuples()は、列名を含むそれぞれの値を次のように返すことを知っています。
ab=pd.DataFrame(np.random.random([3,3]),columns=['hi','low','med'])
for i in ab.itertuples():
print(i)
出力は次のとおりです。
Pandas(Index=0, hi=0.05421443, low=0.2456833, med=0.491185)
Pandas(Index=1, hi=0.28670429, low=0.5828551, med=0.279305)
Pandas(Index=2, hi=0.53869406, low=0.3427290, med=0.750075)
ただし、次のような別のコードセットで期待したように、列が表示されない理由がわかりません。
us qqq equity us spy equity
date
2017-06-19 0.0 1.0
2017-06-20 0.0 -1.0
2017-06-21 0.0 0.0
2017-06-22 0.0 0.0
2017-06-23 1.0 0.0
2017-06-26 0.0 0.0
2017-06-27 -1.0 0.0
2017-06-28 1.0 0.0
2017-06-29 -1.0 0.0
2017-06-30 0.0 0.0
上記は、タイムスタンプをインデックス、float64をリストの値、文字列['us qqq equity'、 'us spyequity']のリストを列として持つPandasデータフレームです。
私がこれをするとき:
for row in data.itertuples():
print (row)
次のように、列が_1および_2として表示されます。
Pandas(Index=Timestamp('2017-06-19 00:00:00'), _1=0.0, _2=1.0)
Pandas(Index=Timestamp('2017-06-20 00:00:00'), _1=0.0, _2=-1.0)
Pandas(Index=Timestamp('2017-06-21 00:00:00'), _1=0.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-22 00:00:00'), _1=0.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-23 00:00:00'), _1=1.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-26 00:00:00'), _1=0.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-27 00:00:00'), _1=-1.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-28 00:00:00'), _1=1.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-29 00:00:00'), _1=-1.0, _2=0.0)
Pandas(Index=Timestamp('2017-06-30 00:00:00'), _1=0.0, _2=0.0)
誰かが私が間違ったことについて何か手がかりを持っていますか?元のデータフレームを作成するときの変数参照の問題と関係がありますか?(また、副次的な質問として、itertuples()から生成されたデータの型はタプルでなければならないことをコミュニティから学びましたが、(上記のように)戻り値の型はtypeステートメントから確認したとおりですか?)
私はまだDataFrameのアプリケーションをマスターしようとしていますので、今しばらくお待ちいただきますようお願いいたします。
これは、スペースを含む列名の処理に関する問題のようです。列名をスペースのない別の列名に置き換えると、次のように機能します。
df.columns = ['us_qqq_equity', 'us_spy_equity']
# df.columns = df.columns.str.replace(r'\s+', '_') # Courtesy @MaxU
for r in df.head().itertuples():
print(r)
# Pandas(Index='2017-06-19', us_qqq_equity=0.0, us_spy_equity=1.0)
# Pandas(Index='2017-06-20', us_qqq_equity=0.0, us_spy_equity=-1.0)
# ...
スペースを含む列名は、名前付きタプルで効果的に表すことができないため、印刷時に自動的に名前が変更されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加