我在Pandas的Dataframe中添加了3行。但是,只添加最后一行

2024-04-25 13:16:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个函数。 使用append添加了3次数据帧。 但结果只添加了最后一次。你知道吗

你知道吗====== ・首先在函数外部声明数据帧类型是错误的。 所以我在一个函数中声明了它。你知道吗

・后来,我在def AddDataframe(ymd,sb,vol)之外编写了Dataframe:。然后我犯了个错误。错误如下。你知道吗

NameError:未定义名称“Hisframe10”

import pandas as pd
def AddDataframe(ymd,sb,vol):
  data={'yyyymmdd':[],
      'Sell':[],
      'Buy':[],
      'Volume':[],        
      'JPX':[],
      'FutPrice':[]}
  Hisframe8=pd.DataFrame(data)
  Hisframe8
  print('')
  print('Hisframe8= ',Hisframe8)
  adddata={'yyyymmdd':[ymd],
    'Sell':[sb],
    'Buy':['Nan'],
    'Volume':[vol],           
    'JPX':[-1],
    'FutPrice':[0.]}
  Hisframe10=pd.DataFrame(adddata)
  Hisframe10
  return(Hisframe8.append(Hisframe10))
AddDataframe('2019-05-03','sell',123)
AddDataframe('2019-05-04','sell',345)
AddDataframe('2019-05-05','sell',456)
#Hisframe10  #err

=======
我想添加3行数据帧。 我该怎么做?你知道吗

https://imgur.com/i1lAB8M


Tags: 数据函数声明datadef错误sbpd
1条回答
网友
1楼 · 发布于 2024-04-25 13:16:53

您可以将Hisframe8设为全局

import pandas as pd

Hisframe8=pd.DataFrame(columns=['yyyymmdd','Sell','Buy','Volume','JPX','FutPrice'])

def AddDataframe(ymd,sb,vol):
    global Hisframe8
    adddata={'yyyymmdd':[ymd],'Sell':[sb],'Buy':['Nan'],'Volume':[vol],'JPX':[-1],'FutPrice':[0.]}
    Hisframe10=pd.DataFrame(adddata)
    Hisframe8 = Hisframe8.append(Hisframe10)


AddDataframe('2019-05-03','sell',123)
AddDataframe('2019-05-04','sell',345)
AddDataframe('2019-05-05','sell',456)
print(Hisframe8)
网友
2楼 · 发布于 2024-04-25 13:16:53

不必创建额外的数据帧并将其附加到第一个数据帧。 您只需将字典附加到现有的df,如下所示:append dictionary to data frame

另外一个更好的样式可能是定义要首先插入的数据帧,因为这不是函数的主要用途。你知道吗

我的建议是:

structure = {'date':[], 'Sell':[], 'Buy':[], 'Volume':[], 'JPX':[], 'FutPrice':[]}
df = pd.DataFrame(structure)

def add_data(df, date, sb, vol):
   insert_dict = {'date':[date], 'Sell':[sb], 'Buy':[np.nan],
                  'Volume':[vol], 'JPX':[-1], 'FutPrice':[0.]}

   return df.append(insert_dict , ignore_index = True)

df_appended = add_data(df, '2019-01-01', 'sell', 456)

我希望这有帮助

相关问题 更多 >