将数据帧附加到空数据帧不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据帧附加到空数据帧不起作用相关的知识,希望对你有一定的参考价值。

我在我的文件顶部附近用全局范围声明了一个空数据框:

final_df = pd.DataFrame()

我有stats_dfs成功打印正确的值,但final_df没有改变后附加stats_df:

stats_df = pd.DataFrame(X, columns=stats_feature_names).sum().to_frame().T
print('statsdf being appended: 
', stats_df)
print('final_df before append: 
', final_df)
final_df.append(stats_df)
print('final_df after append: 
', final_df)

这些打印语句的输出是:

statsdf being appended: 
    GF  GA
0  14  33
final_df before append: 
 Empty DataFrame
Columns: []
Index: []
final_df after append: 
 Empty DataFrame
Columns: []
Index: []

它应该是:

statsdf being appended: 
    GF  GA
0  14  33
final_df before append: 
 Empty DataFrame
Columns: []
Index: []
final_df after append: 
 GF  GA
0  14  33

为什么stats_df没有附加到final_df

答案

你需要分配给新的DataFrame,因为使用DataFrame.append,而不是纯粹的python append

stats_feature_names = ['a','b']
final_df = pd.DataFrame()

X = [[1,2]]
stats_df = pd.DataFrame(X, columns=stats_feature_names).sum().to_frame().T
print('statsdf being appended: 
', stats_df)
print('final_df before append: 
', final_df)
final_df = final_df.append(stats_df, ignore_index=True)
print('final_df after append: 
', final_df)
    a  b
0  1  2

但更好的解决方案是附加到列表(纯python追加)和循环使用concat

L = []
for x in iterator:
    stats_df = pd.DataFrame([[1,2]], columns=stats_feature_names).sum().to_frame().T
    L.append(stats_df)

final_df = pd.concat(L, ignore_index=True)
print('final_df after append: 
', final_df)

以上是关于将数据帧附加到空数据帧不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spark - Scala:当 json 数据分布在多行时,读取 json 文件作为数据帧不起作用?

在另一个单独的数据帧中使用一个数据帧中的 id 抓取数据,该数据帧不具有相同的列名并将字符串附加到一个值

如何在for循环中将数据附加到空列表?

如何将 for 循环中的 .pkl 文件附加到 for 循环中创建的 pandas 数据帧?

CSS不显示关键帧不工作的不透明动画

如何在循环中将不同大小的列表附加到空熊猫数据框的每一列?