比较两个数据帧时的 Python KeyError

问题描述

我从 CSV 文件提取了数据,并想用它来更新电子表格中的值。数据框有一列值的“代码”。我想检查电子表格中的现有值,如果 CSV 有新值,请将新值添加到电子表格中。

if df_xls.empty:
    df_xls = df_xls.append(pd.DataFrame({"ticker": [[reduced.ticker[0]]]}),ignore_index=True)
wtw = 1

print(reduced.columns.values)
print(df_xls.columns.values)

for csv_row in reduced:
    for xls_row in df_xls:
        if reduced.ticker[csv_row] == df_xls.ticker[xls_row]:
            wtw = 0
            break
        else:
            next(xls_row)
if wtw == 1:
     df_xls = df_xls.append(pd.DataFrame({"ticker": [[reduced.ticker[csv_row]]]}),ignore_index=True)
next(csv_row)

我收到一个“KeyError: 'ticker'”,参考“if reduction.ticker[csv_row] == df_xls.ticker[xls_row]:”行,我不明白错误,因为列名是正确的.上面的打印输出显示

['ticker' '2021-02-01 shares' '2021-02-01 value']
['ticker']

提前致谢。

编辑 --

我没有 URL 上的可用代码,但这里是脚本的全部内容

import numpy as np
import pandas as pd

filename = "2021-02-01-FULLREPORT.csv"

##load new information from CSV into dataframe##
df_csv = pd.read_csv(filename)
prefix = filename[0:10]

ticker = df_csv.ticker
shares = df_csv.shares
value = df_csv["market value($)"]

reduced = pd.DataFrame({
    "ticker": ticker,prefix +" shares": shares,prefix +" value": value
})
##end load new information from CSV into dataframe##

##load excel
from pandas import ExcelWriter
from pandas import ExcelFile
df_xls = pd.read_excel('file.xlsx')

##update ticker list with information saved in reduced##

if df_xls.empty:
    df_xls = df_xls.append(pd.DataFrame({"ticker": [[reduced.ticker[0]]]}),ignore_index=True)
next(csv_row)

print (df_xls)

解决了 KeyError:

##load excel
from pandas import ExcelWriter
from pandas import ExcelFile
df_xls = pd.read_excel('file.xlsx')

##update ticker list saved in reduced##

for csv_row in reduced.index:
    wtw = 1
    print ("testing " + reduced.ticker[csv_row])
    for xls_row in df_xls.index:
        print ("comparing "+ reduced.ticker[csv_row] + "with ")
        print (df_xls.ticker[xls_row])
        if reduced.ticker[csv_row] == df_xls.ticker[xls_row]:
            print ("match found")
            wtw = 0
            break
    if wtw == 1:
        df_xls = df_xls.append(pd.DataFrame({"ticker": [[reduced.ticker[csv_row]]]}),ignore_index=True)

print (df_xls)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)