実現したいこと
データフレームの['SC']という列の値毎のCSVファイルを書き出したい。
前提
xlsxファイルをデータフレームに読み込んだ後に、「SC」という列の値をfor文で回して、ファイルを分けるシステムを作っています。
発生している問題・エラーメッセージ
一番最初に返ってくる値(CSV)は中身があるのですが、2回目以降から中身がなく、以下のようなエラーメッセージが返ってきます。
エラーメッセージ
Empty DataFrame
Columns: [SC, 名称, 市場, 業種, 日付, 株価, 25日移動平均線, 75日移動平均線]
Index: []
該当のソースコード
import pandas as pd df = pd.read_excel('〇〇.xlsx', sheet_name = 'Sheet1') meigara_list = df['SC'].to_list() #print(type(meigara_list)) #print(meigara_list) for meigara in meigara_list: filter_sc = df['SC'] == meigara df = df[filter_sc] df['25日移動平均線'] = df['株価'].rolling(window=25).mean().round(1) df['75日移動平均線'] = df['株価'].rolling(window=75).mean().round(1) df = df.sort_values('日付', ascending=False) print(df) df.to_csv('data/result_all_25_75_{}.csv'.format(meigara)) if meigara == 1376: break
python
試したこと
listの中身はprint文で確認済です。
最初は「meigara_list」というリストにせず、そのままfor文で回していたのですが、調べてたらリストの方が良さそうでしたので、今はリストにしてます。
for文の中身の問題ではないかと思っているのですが、私の実力じゃ解決に至らずでご教授いただければ幸いです。
宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
python3.9
pycharm2022.2.3
●追記
import pandas as pd
df = pd.read_excel('〇〇.xlsx', sheet_name = 'Sheet1')
for meigara in set(df['SC'].to_list()):
filter_sc = df['SC'] == meigara
df2 = df[filter_sc].copy()
print(df2)
df2['25日移動平均線'] = df2['株価'].rolling(window=25).mean().round(1) df2['75日移動平均線'] = df2['株価'].rolling(window=75).mean().round(1) df2 = df2.sort_values('日付', ascending=False) # print(df) df2.to_csv('data/result_all_25_75_{}.csv'.format(meigara)) if meigara == 1376: break

回答1件
あなたの回答
tips
プレビュー