Pandas .append() 方法的好替代方法,既然它已被弃用?
Good alternative to Pandas .append() method, now that it is being deprecated?
我经常使用以下方法将单行附加到数据框。我真正喜欢它的一件事是它允许您附加一个简单的字典对象。例如:
# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])
# Appending a row
df = df.append({ 'a': 1, 'b': 2 }, ignore_index=True)
同样,我最喜欢的是代码非常干净,需要的行很少。现在我想推荐的替代方案是:
# Create the new row as its own dataframe
df_new_row = pd.DataFrame({ 'a': [1], 'b': [2] })
df = pd.concat([df, df_new_row])
因此,之前的一行代码现在变成了两行代码,其中包含一个一次性变量和我创建新数据框的多余代码。 :( 有没有像我过去那样只使用 dict 的好方法(未弃用)?
如果需要的话,用你的字典创建一个列表,然后用 df = pd.DataFrame.from_records(your_list)
创建一个新的数据框。 List 的“附加”方法非常有效,永远不会被弃用。另一方面,由于数据帧的设计原因,经常需要重新创建数据帧并将所有数据复制到附加上 - 这就是他们弃用该方法的原因
我也喜欢append方法。
但是你可以在一行中用一个字典列表来完成它
df = pd.concat([df, pd.DataFrame.from_records([{ 'a': 1, 'b': 2 }])])
或使用 loc 和元组获取具有递增升序索引的 DataFrame 上的值
df.loc[len(df), ['a','b']] = 1, 2
或者也许
df.loc[len(df), df.columns] = 3, 4
这已经有了很好的答案,但我只是想在最后添加一些东西,因为我没有找到它:)
如果您要将 DF 附加到 DF 并想使用 concat 这是我发现的方式:
原始与附加
outputxlsx = outputxlsx.append( df, ignore_index=True)
连接
outputxlsx = pd.concat([outputxlsx, pd.DataFrame.from_records(df)])
我经常使用以下方法将单行附加到数据框。我真正喜欢它的一件事是它允许您附加一个简单的字典对象。例如:
# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])
# Appending a row
df = df.append({ 'a': 1, 'b': 2 }, ignore_index=True)
同样,我最喜欢的是代码非常干净,需要的行很少。现在我想推荐的替代方案是:
# Create the new row as its own dataframe
df_new_row = pd.DataFrame({ 'a': [1], 'b': [2] })
df = pd.concat([df, df_new_row])
因此,之前的一行代码现在变成了两行代码,其中包含一个一次性变量和我创建新数据框的多余代码。 :( 有没有像我过去那样只使用 dict 的好方法(未弃用)?
如果需要的话,用你的字典创建一个列表,然后用 df = pd.DataFrame.from_records(your_list)
创建一个新的数据框。 List 的“附加”方法非常有效,永远不会被弃用。另一方面,由于数据帧的设计原因,经常需要重新创建数据帧并将所有数据复制到附加上 - 这就是他们弃用该方法的原因
我也喜欢append方法。 但是你可以在一行中用一个字典列表来完成它
df = pd.concat([df, pd.DataFrame.from_records([{ 'a': 1, 'b': 2 }])])
或使用 loc 和元组获取具有递增升序索引的 DataFrame 上的值
df.loc[len(df), ['a','b']] = 1, 2
或者也许
df.loc[len(df), df.columns] = 3, 4
这已经有了很好的答案,但我只是想在最后添加一些东西,因为我没有找到它:) 如果您要将 DF 附加到 DF 并想使用 concat 这是我发现的方式:
原始与附加
outputxlsx = outputxlsx.append( df, ignore_index=True)
连接
outputxlsx = pd.concat([outputxlsx, pd.DataFrame.from_records(df)])