我有一列包含多个度量,所有度量都在一行中,如下图所示:
我正在尝试将此 str 列转换为浮点数或数字,以便能够执行平均值、绘制直方图等计算。
我尝试了 df['nums']=df['nums'].astype(float)
并收到此错误:
我该如何解决?
谢谢
答案 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
使用包含值列表的字典(对于不同的行可以有不同的长度)还可以让您轻松绘制条形图和直方图