-2
df.to_csv()를 사용하여 .csv에 데이터 프레임을 쓰려고합니다. 어떤 이유로, 마지막 값 (마지막 티커의 데이터) 만 쓰고 있습니다. 그것은 시세표 (거북이, 모든 시세 표시기가 첫 번째 열에 있음) 목록을 읽고 각 시세 표시기에 대한 가격 데이터를 뱉어냅니다. 문제없이 모든 데이터를 인쇄 할 수 있지만 .csv에 쓸 수는 없습니다. 왜 그런가? 감사합니다Dataframe to .csv - 마지막 값만 쓰고 있습니다 - Python/Pandas
이 파일이 here을 볼 개방의 loop.For 다른 모드의 모든 반복에있는 데이터를 덮어 쓰기 때문에 대신wb
의 추가에 대한
input_file = pd.read_csv("turtle.csv", header=None)
for ticker in input_file.iloc[:,0].tolist():
data = web.DataReader(ticker, "yahoo", datetime(2011,06,1), datetime(2016,05,31))
data['ymd'] = data.index
year_month = data.index.to_period('M')
data['year_month'] = year_month
first_day_of_months = data.groupby(["year_month"])["ymd"].min()
first_day_of_months = first_day_of_months.to_frame().reset_index(level=0)
last_day_of_months = data.groupby(["year_month"])["ymd"].max()
last_day_of_months = last_day_of_months.to_frame().reset_index(level=0)
fday_open = data.merge(first_day_of_months,on=['ymd'])
fday_open = fday_open[['year_month_x','Open']]
lday_open = data.merge(last_day_of_months,on=['ymd'])
lday_open = lday_open[['year_month_x','Open']]
fday_lday = fday_open.merge(lday_open,on=['year_month_x'])
monthly_changes = {i:MonthlyChange(i) for i in range(1,13)}
for index,ym, openf,openl in fday_lday.itertuples():
month = ym.strftime('%m')
month = int(month)
diff = (openf-openl)/openf
monthly_changes[month].add_change(diff)
changes_df = pd.DataFrame([monthly_changes[i].get_data() for i in monthly_changes],columns=["Month","Avg Inc.","Inc","Avg.Dec","Dec"])
CSVdir = r"C:\Users\..."
realCSVdir = os.path.realpath(CSVdir)
if not os.path.exists(CSVdir):
os.makedirs(CSVdir)
new_file_name = os.path.join(realCSVdir,'PriceData.csv')
new_file = open(new_file_name, 'wb')
new_file.write(ticker)
changes_df.to_csv(new_file)
대신'wb'를 사용하면 추가를 위해'a'를 사용합니다. – shivsn
루프에서 'PriceData.csv'CSV 파일을 덮어 쓰는 중입니다 ... 원하는 CSV 파일의 샘플을 게시하는 것이 좋습니다. 더 쉽게 할 수 있다고 생각합니다. – MaxU
. @ Rage. 나는 더 많은 질문을 게시하기 전에 파이썬 자습서를 찾는 것이 좋습니다. ---- 위의 코드는 'for-loop'를 잘못 사용합니다. 날짜 정보를 설정합니다. – Merlin