熊猫:麻烦设置每列的值

时间:2017-07-28 23:47:30

标签: python pandas

我有一个空的Pandas数据框,我试图为它添加一行。这就是我的意思:

text_img_count = len(BeautifulSoup(html, "lxml").find_all('img'))
    print 'img count: ', text_img_count

keys = ['text_img_count', 'text_vid_count', 'text_link_count', 'text_par_count', 'text_h1_count',
              'text_h2_count', 'text_h3_count', 'text_h4_count', 'text_h5_count', 'text_h6_count',
                       'text_bold_count', 'text_italic_count', 'text_table_count', 'text_word_length', 'text_char_length',
                       'text_capitals_count', 'text_sentences_count', 'text_middles_count', 'text_rows_count',
                       'text_nb_digits', 'title_char_length', 'title_word_length', 'title_nb_digits']
    values = [text_img_count, text_vid_count, text_link_count, text_par_count, text_h1_count,
                                   text_h2_count, text_h3_count, text_h4_count, text_h5_count, text_h6_count,
                                   text_bold_count, text_italic_count, text_table_count, text_word_length,
                                   text_char_length, text_capitals_count, text_sentences_count, text_middles_count,
                                   text_rows_count, text_nb_digits, title_char_length, title_word_length, title_nb_digits]

    numeric_df = pd.DataFrame()
    for key, value in zip(keys, values):
        numeric_df[key] = value

    print numeric_df.head()

然而,输出是这样的:

img count:  2
Empty DataFrame
Columns: [text_img_count, text_vid_count, text_link_count, text_par_count, text_h1_count, text_h2_count, text_h3_count, text_h4_count, text_h5_count, text_h6_count, text_bold_count, text_italic_count, text_table_count, text_word_length, text_char_length, text_capitals_count, text_sentences_count, text_middles_count, text_rows_count, text_nb_digits, title_char_length, title_word_length, title_nb_digits]
Index: []

[0 rows x 23 columns]

在我为每个列分配值后,这似乎是numeric_df为空。

发生了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我通常在空数据框中添加一个列是将信息附加到列表中,然后为其提供数据框结构。例如:

df=pd.DataFrame()
L=['a','b']

df['SomeName']=pd.DataFrame(L)

如果列表是数字,你必须使用pd.Series()。