如何将.append转换为.concat-pandas-python



我有这个数据条目:

[{'id': 2269396, 'from': 1647086100, 'at': 1647086160000000000, 'to': 1647086160, 'open': 1.072652, 'close': 1.072691, 'min': 1.072641, 'max': 1.072701, 'volume': 0},..]

Apllying this indexing pandas:

current = self.getAllCandles(self.active_id,start_candle)
main = pd.DataFrame()
useful_frame = pd.DataFrame()
for candle in current:
useful_frame = pd.DataFrame(list(candle.values()),index = list(candle.keys())).T.drop(columns = ['at'])
useful_frame = useful_frame.set_index(useful_frame['from']).drop(columns = ['id'])
main = main.append(useful_frame)
main.drop_duplicates()

final_data = main.drop(columns = {'to'})
final_data = final_data.loc[~final_data.index.duplicated(keep = 'first')]

return final_data

之后我有以下结果:

from            open       close        min         max     volume
from                        
1.647086e+09    1.647086e+09    1.072652    1.072691    1.072641    1.072701    0.0
... ... ... ... ... ... ...

由于df.append((将被弃用,我很难使用df.contat((执行相同的指令。但我没有得到它,我怎么能改变它呢?

  • 谢谢大家,我对我们的朋友Stuart Berg@Stuart Berg建议的代码做了一个小修改,非常完美:
current = self.getAllCandles(self.active_id, start_candle)
frames = []

useful_frame = pd.DataFrame.from_dict(current, orient='columns')
useful_frame = useful_frame.set_index('from')
useful_frame = useful_frame.drop(columns=['at', 'id'])
frames.append(useful_frame)

main = pd.concat(frames).drop_duplicates()
final_data = main.drop(columns='to')
final_data = final_data.loc[~final_data.index.duplicated()]

return final_data

我想这就是您想要的:

current = self.getAllCandles(self.active_id, start_candle)
frames = []
for candle in current:
useful_frame = pd.DataFrame.from_dict(candle, orient='columns')
#useful_frame['from'] = datetime.datetime.fromtimestamp(int(useful_frame['from'])).strftime('%Y-%m-%d %H:%M:%S')
useful_frame = useful_frame.set_index('from')
useful_frame = useful_frame.drop(columns=['at', 'id'])
frames.append(useful_frame)
main = pd.concat(frames).drop_duplicates()
final_data = main.drop(columns='to')
final_data = final_data.loc[~final_data.index.duplicated()]

创建一个空的python列表,然后将所有系列附加到该列表中。最后在该列表中调用pandas的concat,这将为您提供该数据帧。

最新更新