将数据帧附加到空数据帧不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据帧附加到空数据帧不起作用相关的知识,希望对你有一定的参考价值。
我在我的文件顶部附近用全局范围声明了一个空数据框:
final_df = pd.DataFrame()
我有stats_df
s成功打印正确的值,但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 抓取数据,该数据帧不具有相同的列名并将字符串附加到一个值