DataFrame列中的每个项目都是不同维度的列表 - 如何继续?

时间:2014-10-22 17:36:08

标签: python mysql numpy pandas

我的问题与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比较陌生,所以如果我错过了一些基本的东西,请耐心等待。

1 个答案:

答案 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