首页 > 解决方案 > 将行从一个数据帧附加到另一个数据帧的最有效方法

问题描述

import numpy as np
import pandas as pd

data2 = [['Name 1', 20, 20, 15, 20], ['Name 2', 15, 10, 10, 8]]
df2 = pd.DataFrame(data2, columns=['Name', 1, 2, 3, 4])

data1 = [['New 1', 5, 10, 15, 20], ['New 2', 2, 5, 10 , 20]]
df = pd.DataFrame(data1, columns=['Name', 1, 2, 3, 4])

print(df)

    Name  1   2   3   4
0  New 1  5  10  15  20
1  New 2  2   5  10  20

new_line = df.iloc[0]
df2 = df2.append(new_line)

print(df2)

     Name   1   2   3   4
0  Name 1  20  20  15  20
1  Name 2  15  10  10   8
0   New 1   5  10  15  20

我有我想要的结果。但是,当我循环数百次增加 df.iloc[1]、[2] 等时,它似乎成为我的 for 循环的瓶颈。有没有更有效的方法来选择一行df然后将其附加到df2?

标签: pythonpandasdataframe

解决方案


如果你想附加整个数据框这样的东西应该可以解决问题:

df.append(df2)

但我假设您已经知道这一点,并且只想要选定的几个指定行。在这种情况下,我会创建一个数组,其中包含您想要附加到 df 的 df2 中的所需 rowsID。

所以这样的事情应该有效:

rowidarr = []
for items in df.iterrows():
    ###condition to get rowid you want
    rowidarr.append(index)
filter_df  = df[df.index.isin(rowidarr)]
df.append(filter_df)

推荐阅读