熊猫字符串浮动 - 几个数据不是逗号分隔

时间:2021-07-06 17:20:29

标签: python-3.x pandas

我有一列包含多个度量,所有度量都在一行中,如下图所示:

enter image description here

我正在尝试将此 str 列转换为浮点数或数字,以便能够执行平均值、绘制直方图等计算。

我尝试了 df['nums']=df['nums'].astype(float) 并收到此错误:

enter image description here

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:1)

我不知道这是否为您提供了您正在寻找的内容,但我会使用混合方法,因为 Pandas df 通常被视为具有单元格值的表格;

所以我会对字典做一些修改,它的键是你的索引或“id”。然后,您就可以使用该字典执行计算,并在必要时将其链接回原始数据框...

我写的代码需要numpy和pandas:

import numpy as np
import pandas as pd

从数据框中获取字典的代码可能如下所示:

def init_operations_on_data(df):

    df_dct = {}
    list_=df['nums'].str.split(' ',expand=True).astype(float).values.tolist()
    # from Anurag Dabas comments
    for i, v in df.iloc[:,0].iteritems():
        #Here I took the first column of the dataframe df as an "id" but you can replace by index
        df_dct[v] = list_[int(i)]
    print(df_dct)

    return df_dct
    # return a dict object

为了计算平均值或任何其他统计数据,您可以编写调用上述函数的小函数:


def mean_on_rows(df):

    df_dct = init_operations_on_data(df)
    # dataframe as a dict
    l_mean = []
    for keys in df_dct.keys():
        l_mean.append(np.nanmean(df_dct[keys]))
        # here the link-up between the keys and the id/index in the dataframe is not completely secured and might need to be looked up in more details
    df['mean'] = l_mean
    print(df)

    return df

使用包含值列表的字典(对于不同的行可以有不同的长度)还可以让您轻松绘制条形图和直方图

例如查看此讨论: How to make a histogram from a list of data

相关问题