pandas 在没有print()命令的情况下将 Dataframe 打印到终端

yv5phkfx  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(165)

我已经写了一些代码来使用Python下载股票价格。
所有Tickers(140+,例如BMW.DE)均无问题。
我遇到了'CON.DE'的问题。它不会保存到一个.csv文件,更奇怪的是,它打印 Dataframe 到终端没有一个print()命令。
我正在使用以下版本运行它:

  • y金融0.1.77
  • Pandas1.5.0
  • Python 3.10.8版
import pandas as pd
import yfinance as yf
import os

curdir = os.getcwd()

def getPrice(ticker):
    df = yf.Ticker(ticker).history(period ='1mo')[['Open', 'High', 'Low', 'Close', 'Volume']] #Download pricing
    outputFile = os.path.join(curdir, 'Output', ticker +'.csv') #define path for output file
    df.to_csv(outputFile) #export as .csv

getPrice('CON.DE') #Doesn't save df to .csv and prints df in terminal
getPrice('BMW.DE') #Saves df to .csv without issue
r8xiu3jd

r8xiu3jd1#

你实际上遇到了一个奇怪的问题,Windows的特殊CON(注意它不区分大小写)文件名基本上是重定向到控制台。
问题出在文件名上。df.to_csv("con")会产生这种行为,所以当你在ticket ==“CON.DE”时开始剥离outputFile的部分时,你会注意到分解CON部分“修复”了你看到的这种不稳定行为。
因此,这应该可以解决您的问题:

outputFile = os.path.join(curdir, 'Output', ticker.replace(".", "") +'.csv') #define path for output file

^上面的代码会去掉.,这样文件名就变成了“孔德.csv”,这样就可以正常工作了。你可以尝试一些其他更适合你的文件名,比如ticker.replace(".", "-")-〉“CON-DE.csv”也可以正常工作,因为Windows会在文件名中插入.,这与大多数其他字符略有不同
以下链接可能对解释CON更有帮助:

相关问题