簡體   English   中英

高效地逐行構建熊貓數據框

[英]Efficiently building a pandas dataframe row by row

我最近一直在通過迭代多個文件、行等來構建 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')

這是構建熊貓 df 的最有效方法嗎? 我沒有將它與 pandas.DataFrame.append 進行比較。 我有兩個關於 append 的想法。 一方面,創建數據幀或系列(單行)只是為了附加它似乎不必要地繁重。 另一方面,pandas 中內置的所有內容都非常快,例如上述方法 apply() 和 iterrows() 以及 groupby() 等。

逐行構建數據框的“大流行”方式是什么?

您可以使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM