将数据框系列中的分数转换为浮点数

时间:2019-03-26 02:46:00

标签: python pandas dataframe fractions

在Python 3.x中,如何将包含分数字符串和NaN值的Dataframe列转换为浮点数?我已经尝试了一些方法,但是没有找到合适的解决方案。

因此,如果我有一个数据框“ df”,则它看起来像:

     a      b
0   John   20/1
1   Bob    NaN
2   Tim    9/2

我怎样才能得到类似df的

      a      b
0   John   20.0
1   Bob    1000.0
2   Tim    4.5

感谢您愿意提供的任何指导!

4 个答案:

答案 0 :(得分:0)

来自eval的{​​{1}}的魔术师

pandas

答案 1 :(得分:0)

或使用apply

df.b = df.b.fillna(1000).apply(pd.eval)

现在:

print(df)

是:

      a       b
0  John    20.0
1   Bob  1000.0
2   Tim     4.5

答案 2 :(得分:0)

尝试以下方法:

df = df.fillna(1000.0)

df.b = [eval(str(e)) for e in df.b]

答案 3 :(得分:0)

// Query all reports and create shortcode

function report_get_listing($params) {
    $reports = [];

   $a = shortcode_atts( array(
    'category' => '', // [report_listing category=""]
   ), $params );

    $context = Timber::get_context();

    $args = array(
        'post_type' => 'report',
        'orderby' => [
            'weight' => 'ASC',
            'post_date' => 'DESC'
        ],
        'post_status' => 'publish',
        'meta_query' => [
            'weight' => [
                'key'     => 'weight',
                'compare' => 'EXISTS',
                'type'    => 'NUMERIC'
            ],

        ],
    );


  // Check for a report category in the query

  if (!empty($a['category'])) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'report_category',
                'terms' => explode(',', $a['category']),
                'field' => 'slug',
                'operator' => 'IN',
            ),
        );
    }

    query_posts($args);

    $report_listing = Timber::get_posts($args);

    foreach ($report_listing as $p) {
        $reports[] = get_single_report($p);
    }

    $context['reports'] = $reports;

    return Timber::compile('report/index.twig', $context);
}

add_shortcode('report_listing', 'report_get_listing');