如何在for循环中在pandas数据框中追加行?

您所在的位置:网站首页 pandas增加一行 如何在for循环中在pandas数据框中追加行?

如何在for循环中在pandas数据框中追加行?

#如何在for循环中在pandas数据框中追加行?| 来源: 网络整理| 查看: 265

假设您的数据如下所示:

import pandas as pd import numpy as np np.random.seed(2015) df = pd.DataFrame([]) for i in range(5): data = dict(zip(np.random.choice(10, replace=False, size=5), np.random.randint(10, size=5))) data = pd.DataFrame(data.items()) data = data.transpose() data.columns = data.iloc[0] data = data.drop(data.index[[0]]) df = df.append(data) print('{}\n'.format(df)) # 0 0 1 2 3 4 5 6 7 8 9 # 1 6 NaN NaN 8 5 NaN NaN 7 0 NaN # 1 NaN 9 6 NaN 2 NaN 1 NaN NaN 2 # 1 NaN 2 2 1 2 NaN 1 NaN NaN NaN # 1 6 NaN 6 NaN 4 4 0 NaN NaN NaN # 1 NaN 9 NaN 9 NaN 7 1 9 NaN NaN

然后可以将其替换为

np.random.seed(2015) data = [] for i in range(5): data.append(dict(zip(np.random.choice(10, replace=False, size=5), np.random.randint(10, size=5)))) df = pd.DataFrame(data) print(df)

换句话说,不要为每一行形成一个新的DataFrame。相反,请收集字典列表中的所有数据,然后df = pd.DataFrame(data)在循环外部最后调用一次。

每次调用都df.append需要为具有新行的新DataFrame分配空间,将所有数据从原始DataFrame复制到新DataFrame,然后将数据复制到新行。所有这些分配和复制使df.append循环调用效率非常低。复制的时间成本随行数成倍增长。一次调用DataFrame一次代码不仅更容易编写,而且性能会更好-复制的时间成本与行数成线性增长。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3