for循环不打印每一行



我有一个从csv文件中提取的pandas df文件,它是这样创建的

def recalc_stock_2day_rsi(ticker):
output = open("output.csv", "a")
yf.pdr_override()
df = pdr.get_data_yahoo(ticker, start, end)
df_close_only = df['Close']
try:
rsi = calc_rsi(df_close_only, 2)
except AttributeError:
rsi = 100
if rsi < 30:
output.write(f"{ticker}n")


output.close()

,并使用dfcsv = pd.read_csv("output.csv"),它看起来像下面的

UPST
0    WMT
1   NFLX
2    EXC
4    AES
..   ...
63   TME
64   BSX
65  QCOM
66  GILD
67  ABNB

但是由于某些原因每当我尝试运行

命令时
for row in dfcsv:
print(row)

只输出UPST

for row in dfcsv循环只迭代数据框的列,而不是行。你可以这样使用iterrows()方法:这将遍历数据框的每一行,并将该行作为pandas系列打印。

for index, row in dfcsv.iterrows():
print(row)

或者您可以使用它来打印行中的特定列:

for index, row in dfcsv.iterrows():
print(row['column_name'])

当您在每个循环中使用a迭代数据帧时,它将遍历列:

for i in range(len(dfcsv)):
print(dfcsv['UPST'][i])

for row in dfcsv['UPST']:
print(row)

最新更新