【发布时间】:2018-07-16 14:01:56
【问题描述】:
假设我有以下熊猫数据框
import pandas as pd
import numpy as np
df= pd.DataFrame(np.nan, columns =["A","B","C"], index =np.arange(5))
df=df.astype(object)
for c in list(df):
for i in df.index.values:
df.at[i, c]=np.arange(5).tolist()
这会导致 df 的单元格是 numpy 数组
df
Out[16]:
A B C
0 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
1 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
2 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
3 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
4 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
我想计算数据框的平均值,但它不起作用,因为每个单元格都被视为一个字符串。例如,
type(df.loc[0][0])
Out[19]: list
因此,如果我计算它的平均值,它会返回 nan
df["Average"]= df.mean(axis=1)
df
Out[21]:
A B C Average
0 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] NaN
1 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] NaN
2 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] NaN
3 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] NaN
4 [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4] NaN
我的问题是,如何将此 df 转换回我可以使用的数值?
【问题讨论】:
-
针对 3 个列表定义“平均值”。
-
您是否尝试计算每个数据框元素(即每个列表)的平均值?因此有 15 个平均值?
-
@coldspeed 对于每一行,平均值是
mean = sum(all_numerical_values_in_the_row)/ len (row)