我正在尝试从一个数据框插入或添加到另一个数据框。我正在遍历原始数据帧,在一列中查找某些单词。找到这些术语之一后,我想将该行添加到新的数据框中。
我通过使用获得行。
entry = df.loc[df['A'] == item]
但是,当尝试使用.add,.insert,.update或其他方法将此行添加到另一个数据框时,我只是得到一个空的数据框。
我还尝试将列添加到字典中并将其转换为数据框,但它会为整个行而不是列值写入数据。那么有没有办法从我现有的变量中向新数据帧添加一个特定行?
答案 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 函数返回一个新对象并且不会更改调用它的对象。