1
我想操縱用戶編寫的Python函數中的數據框。操作代碼在函數外運行時工作正常。但是,當我把它放入函數並運行函數時,它運行時沒有錯誤,但不返回任何數據幀。我的代碼看起來如下:Python:操縱用戶函數中的數據框
def reshape(file):
from IPython import get_ipython
get_ipython().magic('reset -sf')
#import packages
import pandas as pd
import datetime
import calendar
#define file path and import files
path="X:/TEMP/"
file_path =path+file
df = pd.read_excel(file_path, "Sheet1", parse_dates=["Date"])
#reshape data to panel
melted = pd.melt(df,id_vars="Date", var_name="id", value_name="Market_Cap")
melted["id"] = melted["id"].str.replace("id", "")
melted.id = melted.id.astype(int)
melted.reset_index(inplace=True, drop=True)
id_to_string = pd.read_excel(file_path, "Sheet2")
id_to_string = id_to_string.transpose()
id_to_string.reset_index(level=0, inplace=True)
id_to_string.rename(columns = {0: 'id'}, inplace=True)
id_to_string.rename(columns = {"index": 'Ticker'}, inplace=True)
merged = pd.merge(melted, id_to_string, how="left", on="id")
merged = merged.sort(["Date","Market_Cap"], ascending=[1,0])
merged["Rank"] = merged.groupby(["Date"])["Market_Cap"].rank(ascending=True)
df = pd.read_excel(file_path, "hardcopy_return", parse_dates=["Date"])
df = df.sort("Date", ascending=1)
old = merged
merged = pd.merge(old,df, on=["Date", "id"])
merged = merged.set_index("Date")
return merged
reshape("sample.xlsx")
此代碼運行但不返回任何內容。我是否在def命令或通過調用函數時犯了錯誤?任何幫助是極大的讚賞。
您應該上傳代碼,以便我們可以看到您對該數據幀所做的操作 – nacho
好的,如果有幫助的話。我做到了。但是代碼本身在沒有函數包裝的情況下正常運行 –
最後一行'reshape(「sample.xlsx」)'沒有縮進,還是隻是Stackoverflow的格式?如果是這樣,那麼你應該縮進它,所以它會被視爲功能的一部分。否則,'return'語句也不包括在內。 –