有效地逐行构建pandas数据帧

时间:2017-02-22 21:21:27

标签: python pandas dataframe

我最近通过迭代多个文件,行等来构建pandas数据帧。我通过在字典中附加项目然后转换为数据帧来构建它们:

据我所知,还有其他工具,例如apply()和interrows()来遍历行并逐行应用或筛选数据。这不是这个问题的主题。

new_data_dict = {}
for r in df.index:
    new_data = df.loc[r] **2
    new_data_dict[r] = new_data

new_df = pd.DataFrame.from_dict(new_data_dict, orient = 'index')

这是构建pandas df最有效的方法吗?我还没有将它与pandas.DataFrame.append进行比较。我有两个关于追加的想法。一方面,创建一个数据帧或一系列(单行)似乎不必要太多,只是为了追加它。另一方面,内置于pandas中的所有内容都非常快,例如上面的方法apply()和iterrows()以及groupby()等。

什么是' pandamic'逐行构建数据框的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用 numpy,而不是使用 for 循环和重复行。

import pandas as pd
import numpy as np
df = pd.DataFrame({'Location':['New York','Florida','California', 'Nevada','Georgia'],
                   'Owner':['John','Gary','Mike','Kate','Lucy'],
                   'Score':[50,80,70,90,80]})

print (df)
new_df = pd.DataFrame(np.repeat(df.values,2,axis=0))
print (new_df)

原始数据框:

     Location Owner  Score
0    New York  John     50
1     Florida  Gary     80
2  California  Mike     70
3      Nevada  Kate     90
4     Georgia  Lucy     80

具有重复行的新数据框:

            0     1   2
0    New York  John  50
1    New York  John  50
2     Florida  Gary  80
3     Florida  Gary  80
4  California  Mike  70
5  California  Mike  70
6      Nevada  Kate  90
7      Nevada  Kate  90
8     Georgia  Lucy  80
9     Georgia  Lucy  80