将行从一个数据框添加到另一个

时间:2019-08-15 03:34:11

标签: python pandas

我正在尝试从一个数据框插入或添加到另一个数据框。我正在遍历原始数据帧,在一列中查找某些单词。找到这些术语之一后,我想将该行添加到新的数据框中。

我通过使用获得行。 entry = df.loc[df['A'] == item]  但是,当尝试使用.add,.insert,.update或其他方法将此行添加到另一个数据框时,我只是得到一个空的数据框。

我还尝试将列添加到字典中并将其转换为数据框,但它会为整个行而不是列值写入数据。那么有没有办法从我现有的变量中向新数据帧添加一个特定行?

3 个答案:

答案 0 :(得分:0)

那么条目是一个包含要添加的行的数据框? 您可以简单地使用concat函数将两个数据框连接起来,如果它们都具有相同的列名

  

将熊猫作为pd导入

     

entry = df.loc [df ['A'] == item]

     

concat_df = pd.concat([new_df,entry])

pandas.concat参考:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html

答案 1 :(得分:0)

不确定操作的大小,但是从效率的角度来看,最好将所有找到的行添加到列表中,然后使用pandas.concat将它们一次连接在一起,然后再次使用concat将找到的条目数据框与“插入”数据框合并。这将比每次使用concat快得多。如果您要从search_keys项列表中进行搜索,则类似:

entries = []
for i in search_keys:
    entry = df.loc[df['A'] == item]
    entries.append(entry)

found_df = pd.concat(entries)
result_df = pd.concat([old_df, found_df])

答案 2 :(得分:0)

append 函数需要一个以这种形式排列的行列表:

[row_1, row_2, ..., row_N]

虽然每一行都是一个列表,代表每一列的值

因此,假设您尝试添加一行,您应该使用:

entry = df.loc[df['A'] == item]
df2=df2.append( [entry] )

请注意, python 的列表不同,DataFrame.append 函数返回一个新对象并且不会更改调用它的对象。

另见enter link description here