【发布时间】:2018-01-24 20:10:52
【问题描述】:
我有一个 2x1 的 pandas 数据框,其中 2 个单元格包含 numpy 数组:
>>> import numpy as np
>>> import pandas as pd
>>> a0 = np.array([[1, 2], [2, 2]])
>>> a1 = np.array([[3, 2], [1, 1]])
>>> df = pd.DataFrame([[a0], [a1]])
我可以按如下方式计算两个数组的元素平均值:
>>> np.mean(df[0])
array([[ 2. , 2. ],
[ 1.5, 1.5]])
现在我想考虑至少有一个数组包含 nan/s 的情况,例如
>>> a0 = np.array([[1, 2], [2, np.nan]])
>>> a1 = np.array([[3, 2], [1, 1]])
>>> df = pd.DataFrame([[a0], [a1]])
上面使用的平均方法给出了
>>> np.mean(df[0])
array([[ 2. , 2. ],
[ 1.5, nan]])
正如预期的那样。我希望 nan/s 被忽略。我本来希望以下工作
>>> np.nanmean(df[0])
array([[ -4., -4.],
[ -3., nan]])
但显然不是。
所以,我的问题是:如何计算包含在 pandas 数据帧的单元格中的 numpy 数组的元素方式?
【问题讨论】:
-
两个问题:您可能不会混合索引 0 和列 0,对吧?也许命名数据框列可能会有所帮助。而且,
np.nanmean(df[0])的预期结果是array([[ 2. , 2. ], [ 1.5, 1]])? -
(i) 如果我使用例如,我会得到相同的结果。 'c' 作为列名。 (ii) 是的,预期结果是
np.array([[2., 2.], [1.5, 1.]])。
标签: python arrays pandas numpy