我有一个创建数据帧的函数。这是第一个功能。在第二个函数中,我想使用我在第一个函数中创建的数据框。如何从函数返回数据帧
这是缩短功能:
def einlesen():
rbu = pd.read_excel('INPUT\RBU_COIN2.xlsx') #RBU-DATEN AUS EXCEL EINLESEN
data_faktura = pd.merge(rbu, hvl, on='EQ_NR', how='left') #RBU UND HVL ANHAND DER EQ_NR ZUGEORDNET
print('RBU-DATEN UND HVL-DATEN ZUSAMMENGEFASST!')
data_faktura['TA'] = data_faktura['TA'].replace(['CORENET', 'MOBCORENET', 'mobRAN', 'mobCORENET', 'MOBRAN', 'RZ-Server', 'Sonstiges'], 'SONSTIGES') #TA NACH SUCHKRITERIEN ERSETZT
data_faktura['TA'] = data_faktura['TA'].replace(['RIFU', 'Rifu', 'rifu'], 'RIFU')
data_faktura['TA'] = data_faktura['TA'].replace(['TRANSPORTNETZ/WDM', 'Transportnetz/WDM', 'TRANSPORTNETZ/wdm', 'Transportnetz/wdm'], 'TRANSPORTNETZ/WDM')
data_faktura['TA'] = data_faktura['TA'].replace(['TVGrundv', 'tvgrundv', 'TVGrundV', 'TVgrundv'], 'TVGRUNDV')
data_faktura['TA'] = data_faktura['TA'].replace(['IP-CORE-VOICE'], 'IP-CORE')
data_faktura['TA'] = data_faktura['TA'].replace(['AGS0'], 'AGS')
data_faktura['TA'].fillna('SONSTIGES', inplace=True) #LEERWERTE ERSETZT
print('TECHNIKARTEN ZUGEWIESEN!')
#data_faktura.to_excel('fakt_daten.xlsx', index=False) #OUTPUT ALS EXCELDATEI
print('Daten für Berechnung des Zwischenergebnisses erfasst!')
Button_start1.config(state=ACTIVE) #BUTTON WIEDER AUF AKTIV GESETZT
msg_oben.config(text='Daten eingelesen! Bitte Berechnung starten!')
#os.startfile('fakt_daten.xlsx')
return data_faktura
,你可以看到我试图从功能而归数据帧“返回data_faktura”,但它没有工作。
我尝试调用数据框 “data_faktura” 这样的:
def zwischenergebnis(data_faktura):
data_kl2m = data_faktura # EINLESEN VON TA '<2M' UND BILDUNG DER SUMME
data_kl2m = data_kl2m[data_kl2m.TA == '<2M']
以下是错误我得到:
TypeError: zwischenergebnis() missing 1 required positional argument: 'data_faktura'
那我怎么调用的函数:
Button_einlesen = ttk.Button(mainWin, text='Faktura einlesen!', command=einlesen)
Button_einlesen.grid(row=4, columnspan=6, sticky="ew")
Button_start1= ttk.Button(mainWin, text='Zwischenergebnisse berechnen!', state=DISABLED, command=zwischenergebnis)
Button_start1.grid(row=5, column=0, columnspan=3, sticky="ew")
我该如何解决这个问题?或者我在这里做错了什么?
谢谢你的帮助!
@tzaman:
以下是错误我得到:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\nanops.py", line 93, in f
result = alt(values, axis=axis, skipna=skipna, **kwds)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\nanops.py", line 250, in nansum
the_sum = values.sum(axis, dtype=dtype_sum)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\numpy\core\_methods.py", line 32, in _sum
return umr_sum(a, axis, dtype, out, keepdims)
TypeError: unsupported operand type(s) for +: 'float' and 'str'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Users\A52113242\Desktop\PROJEKTE\[INPROGRESS] Faktura_sylvia\Faktool\geruest_tool.py", line 221, in zwischenergebnis
data_ags1_mw_KW = data_ags1_mw['KW_WERT'].sum()
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\generic.py", line 4255, in stat_func
skipna=skipna, numeric_only=numeric_only)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\series.py", line 2084, in _reduce
return op(delegate, skipna=skipna, **kwds)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\nanops.py", line 45, in _f
return f(*args, **kwargs)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\nanops.py", line 95, in f
result = alt(values, axis=axis, skipna=skipna, **kwds)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\pandas\core\nanops.py", line 250, in nansum
the_sum = values.sum(axis, dtype=dtype_sum)
File "C:\Users\A52113242\AppData\Local\Downloaded Apps\Winpython\python-3.4.3\lib\site-packages\numpy\core\_methods.py", line 32, in _sum
return umr_sum(a, axis, dtype, out, keepdims)
TypeError: unsupported operand type(s) for +: 'float' and 'str'
我没有看到'data_faktura'在你的函数创建的任何地方。 – piRSquared
也许在函数'def einlesen()'需要'返回rbu'而不是'return data_faktura'。 – jezrael
请发布所有相关的代码,包括你如何调用'einlesen'和'zwischenergebnis'。 – tzaman