Python 数据帧未正确导出为csv,缺少数据
在下面的代码中,我有一个进入函数的条目列表Python 数据帧未正确导出为csv,缺少数据,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,在下面的代码中,我有一个进入函数的条目列表 import yfinance as yf import pandas as pd import csv jam_list = [] def price(ticker): company = yf.Ticker(ticker) price = company.history(period='max') price_df = pd.DataFrame(price) price_df.drop(price_df.colu
import yfinance as yf
import pandas as pd
import csv
jam_list = []
def price(ticker):
company = yf.Ticker(ticker)
price = company.history(period='max')
price_df = pd.DataFrame(price)
price_df.drop(price_df.columns[[0,1,2,4,5,6]], axis = 1, inplace = True)
price_df['tic'] = (ticker)
return price_df
l = ["AAPL", "KO"]
for ticker in l:
jam = price(ticker)
jam_list.append(jam)
jam_df = pd.DataFrame(jam)
print(jam_df)
jam_df.to_csv('jam_df.csv')
当我打印数据帧时,我得到
Close scoop
Date
1980-12-12 0.41 AAPL
1980-12-15 0.38 AAPL
... ... ...
2020-05-14 309.54 AAPL
2020-05-15 307.71 AAPL
[9940 rows x 2 columns]
Close scoop
Date
1962-01-02 0.00 KO
1962-01-03 0.00 KO
... ... ...
2020-05-14 43.70 KO
2020-05-15 43.26 KO
[14695 rows x 2 columns]
当我将它导出到csv文件时,我只会得到KO部分,即打印版本的第二部分。如何使csv同时导出AAPL和KO?for循环中的内容运行了两次,一次用于“APPL”,一次用于“KO”。输出路径相同(“jam_df.csv”),因此APPL的输出被覆盖。for循环中的内容运行了两次,一次用于“APPL”,一次用于“KO”。输出路径相同(“jam_df.csv”),因此APPL的输出被覆盖。在连接df列表后,需要在循环后导出
import yfinance as yf
import pandas as pd
import csv
jam_list = []
def price(ticker):
company = yf.Ticker(ticker)
price = company.history(period='max')
price_df = pd.DataFrame(price)
price_df.drop(price_df.columns[[0,1,2,4,5,6]], axis = 1, inplace = True)
price_df['tic'] = (ticker)
return price_df
l = ["AAPL", "KO"]
for ticker in l:
jam = price(ticker)
jam_list.append(jam)
jam_df = pd.DataFrame(jam)#useless
print(jam_df)
full_df = pd.concat(jam_list)
full_df.to_csv('jam_df.csv')
请参见连接df列表后,需要在循环后导出
import yfinance as yf
import pandas as pd
import csv
jam_list = []
def price(ticker):
company = yf.Ticker(ticker)
price = company.history(period='max')
price_df = pd.DataFrame(price)
price_df.drop(price_df.columns[[0,1,2,4,5,6]], axis = 1, inplace = True)
price_df['tic'] = (ticker)
return price_df
l = ["AAPL", "KO"]
for ticker in l:
jam = price(ticker)
jam_list.append(jam)
jam_df = pd.DataFrame(jam)#useless
print(jam_df)
full_df = pd.concat(jam_list)
full_df.to_csv('jam_df.csv')
请参见以不同的方式命名csv文件?您正在循环,在每个循环中,上一个文件被替换…您有两个不同的数据帧。最后一个文件覆盖了第一个文件,因为在同一个文件名上循环了两次。也许你想把它另存为不同的文件
jam_df.to_csv('jam_df_{name}.csv'.format(name=ticker))
?通过对csv文件进行不同的命名?您正在循环,在每个循环中,上一个文件被替换…您有两个不同的数据帧。最后一个文件覆盖了第一个文件,因为在同一个文件名上循环了两次。也许你想把它另存为不同的文件jam_df.to_csv('jam_df_{name}.csv'.format(name=ticker))
?我可以制作某种类型的for循环以便它们都可以进入csv文件吗?@Wli的答案正好是这样,我可以制作某种类型的for循环以便它们都可以进入csv文件吗?@Wli的答案正好是这样,这可以简化为full_df=pd.concat([price(ticker)对于[“AAPL”,“KO”]]中的票证
。这可以简化为full_df=pd.concat([AAPL”,“KO”]]中票证的价格(票证)
。