假设我有以下的pandas数据框:
这将导致 df 中的单元格成为 numpy 数组。
我想计算数据框的平均值,但由于每个单元格都被视为字符串,因此无法成功。例如,
因此,如果我计算它的平均值,它会返回nan。
我的问题是,我该如何将这个数据框转换为数字值以便进行操作?
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
我的问题是,我该如何将这个数据框转换为数字值以便进行操作?
mean = sum(all_numerical_values_in_the_row)/ len(row)
。 - Liam deBoeuf