我的问题与Converting a list of ints, tuples into an numpy array类似,但不同之处在于每个项目的格式不一定是[float,(float,float,float)],但第一个是[float,float],而下一个是[ float,float,float]等。
我的DataFrame中的数据是从查询mySQL数据库获得的,如果这很重要的话。价值观' column最初填充的格式为" 1,2"和" 1,2,3"和" 1,2,3,4,5"等等。 DataFrame现在看起来大致如下:
ID values num
1 [1, 2] 2
2 [1, 2, 3] 3
3 [1, 2, 3, 4, 5] 5
我想要做的是能够从DataFrame中获取每个[float,float,...]条目,并将基于它的新值/变量报告给附加到同一DataFrame的新列,例如计算每个值的标准差'列表或新变量' avg = sum(values)/ num'并将结果存储在df_new [' stddev']或df_new [' avg']。
这是我目前关注的部分代码:
df_new = df[df.num <= 10]
df_new['values'] = df_new['values'].astype(str).str.split(',')
valList = df_new.values.tolist()
我对Python比较陌生,所以如果我错过了一些基本的东西,请耐心等待。
答案 0 :(得分:0)
df_new = df[df.num <= 10]
df_new['values'] = df_new['values'].str.split(',').apply(lambda x: map(float, x))
df_new['avg'] = df_new['values'].apply(np.mean)
df_new['stddev'] = df_new['values'].apply(np.std)
产量
ID values num avg stddev
0 1 [1, 2] 2 1.5 0.500000
1 2 [1, 2, 3] 3 2.0 0.816497
2 3 [1, 2, 3, 4, 5] 5 3.0 1.414214