【问题标题】:Appending dataframe to empty dataframe is not working将数据框附加到空数据框不起作用
【发布时间】:2018-09-02 23:22:28
【问题描述】:

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

final_df = pd.DataFrame()

我有 stats_dfsuccessfully 打印正确的值,但 final_df 在附加 stats_df 后没有改变:

stats_df = pd.DataFrame(X, columns=stats_feature_names).sum().to_frame().T
print('statsdf being appended: \n', stats_df)
print('final_df before append: \n', final_df)
final_df.append(stats_df)
print('final_df after append: \n', 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

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

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

    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: \n', stats_df)
    print('final_df before append: \n', final_df)
    final_df = final_df.append(stats_df, ignore_index=True)
    print('final_df after append: \n', 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: \n', final_df)
    

    【讨论】:

    • 行得通,谢谢!唯一的问题是,当我使用它时,数据框中的索引没有增加:final_df after append: GF GA 0 17 27 0 15 27 0 14 30 0 14 33
    • 你需要, ignore_index=True),检查编辑的答案。
    猜你喜欢
    • 2018-10-13
    • 2022-11-25
    • 2017-09-06
    • 1970-01-01
    • 2020-03-08
    • 2021-06-06
    • 2018-07-03
    • 2022-01-20
    • 2019-01-14
    相关资源
    最近更新 更多