我有一个Pandas DataFrame,它的列包含列表。我正在尝试获取此列中列表的含义。
以下是我的DataFrame外观的示例:
Loc Background
0 115227854 [0.000120481927711]
1 115227854 [0.000129117642312, 0.000131429072111, 0.00016...
2 115227855 [0.000123193166886]
3 115227855 [0.000142845482001, 0.000184789750329, 0.00018...
4 115227856 [0.000173490631506]
我想做这样的事情来设置一个新的Mean
列,使其等于Background
列中每个列表中数据的平均值:
sig_vars['Mean'] = sig_vars['Background'].mean()
如果需要,这是DataFrame:
df = {'Background': {0: [0.00012048192771084337],
1: [0.00012911764231185137,
0.0001314290721107509,
0.000163015792154865,
0.00018832391713747646,
0.00019627513412134165,
0.00020383723596708027,
0.0002114408734430263,
0.00022564565426983117,
0.000247843759294141],
2: [0.00012319316688567673],
3: [0.00014284548200146926,
0.00018478975032851512,
0.00018864365214110544,
0.00019392685725367248,
0.00022931689046296532,
0.00023965141612200435,
0.00036566589684372596,
0.00043096760847454704,
0.0004584752423369138],
4: [0.00017349063150589867]},
'Loc': {0: 115227854, 1: 115227854, 2: 115227855, 3: 115227855, 4: 115227856}}
答案 0 :(得分:1)
使用tolist
重新创建数据框
pd.DataFrame(sig_vars['Background'].values.tolist()).mean(1)
Out[498]:
0 0.000120
1 0.000189
2 0.000123
3 0.000270
4 0.000173
dtype: float64
#sig_vars['Mean'] = pd.DataFrame(sig_vars['Background'].values.tolist()).mean(1)
答案 1 :(得分:1)
使用还可以使用np.mean实现相同的目的:
import numpy as np
np.mean(df['Background'].tolist(), axis=1)
答案 2 :(得分:1)
列表理解将每个列表转换为数组
df['Mean'] = [np.array(x).mean() for x in df.Background.values]
答案 3 :(得分:1)
这就是我能想到的。
遍历特定列并将其均值存储在DataFrame中。
df = pandas.DataFrame(sig_vars.iloc[i]['background'].mean() for i in range(len(sig_vars)),columns=['mean'])
将列与主数据框连接起来。
sig_vars = sig_vars.join(df)