0

您好,目前我正在尝试使用以下代码在 python 中创建一个空数据框:

for i in range (len('bus0')):
    empty_df = pd.DataFrame(np.nan, index=[i], columns=['bus0', 'bus1'])
    print(empty_df)

但是我得到了一个输出(如下),它为数据帧中的每个索引重新打印列标题 bus0 和 bus1:

 bus0  bus1
0   NaN   NaN
   bus0  bus1
1   NaN   NaN
   bus0  bus1
2   NaN   NaN
   bus0  bus1
3   NaN   NaN

我不希望列标题继续为每个索引重新出现,我只希望它们在顶部显示一次。如何实现这一目标?

4

2 回答 2

1
import pandas as pd
import numpy as np

array = np.asarray([np.nan for x in range(8)]).reshape((4,2))

df = pd.DataFrame(array, columns=['bus0', 'bus1'])
于 2021-01-21T16:05:48.627 回答
0

有几件事正在发生。每次通过 for 循环时,您都在重新分配和重新打印数据帧。

要明白我的意思,下面的代码(只是将 print 语句从 for 循环中取出)只打印分配给数据帧的最后一个数据。

for i in range (len('bus0')):
    empty_df = pd.DataFrame(np.nan, index=[i], columns=['bus0', 'bus1'])

# print(empty_df)
'''
bus0  bus1
3   NaN   NaN
'''

我不会重新分配整个数据框,而是在 for 循环之前声明它,然后使用.iloc在 for 循环中添加每一行。您还可以在遍历 for 循环时使用 .iloc 为不同的行分配不同的值。

import pandas as pd
import numpy as np

empty_df = pd.DataFrame(columns=['bus0', 'bus1'])

for i in range (len('bus0')):
    empty_df.loc[i] = np.nan

# print(empty_df)
'''
bus0 bus1
0  NaN  NaN
1  NaN  NaN
2  NaN  NaN
3  NaN  NaN
'''
于 2021-01-21T16:12:13.173 回答