Python 3.x 在python中剪裁数据帧

Python 3.x 在python中剪裁数据帧,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我想在旧数据框的基础上创建一个新的数据框,这样的话,只会有超过列平均值的值。我的问题是,当然每列都有不同的平均值,我不想单独计算,然后用不同的值剪裁每列。我尝试了双循环,因为行数和列数不同,但没有成功。 例如,我有以下数据帧: a b c 4 5 6 1 2 3 7 9 2 3 6 8 我计算每一列的平均值,然后我想创建新的dataframe,其值大于相应列的平均值,因此: a1 b1 c1 4 9 6 7 6 8 我甚至不确定这是否可行,因为新数

我想在旧数据框的基础上创建一个新的数据框,这样的话,只会有超过列平均值的值。我的问题是,当然每列都有不同的平均值,我不想单独计算,然后用不同的值剪裁每列。我尝试了双循环,因为行数和列数不同,但没有成功。 例如,我有以下数据帧:

a  b  c

4  5  6
1  2  3
7  9  2
3  6  8
我计算每一列的平均值,然后我想创建新的dataframe,其值大于相应列的平均值,因此:

a1  b1  c1

4   9   6
7   6   8

我甚至不确定这是否可行,因为新数据帧中的列可能会有不同的维度,但也许我们可以用NaN填充缺少的条目?我不确定正确的解决方案应该是什么。

您可以比较值,然后通过索引添加
NaN
s,或者:

或:

如果要删除
NaN
s,请在第一行添加带有
dropna
的自定义函数:

df = df[df > df.mean()].apply(lambda x: pd.Series(x.dropna().values))
print (df)
     a    b    c
0  4.0  9.0  6.0
1  7.0  6.0  8.0
通常,如果某列中的值小于,则最后获取
NaN
s:

print (df)
   a  b  c
0  4  5  6
1  1  2  3
2  7  9  2
3  3  6  8
4  3  6  8

print (df[df > df.mean()])
     a    b    c
0  4.0  NaN  6.0
1  NaN  NaN  NaN
2  7.0  9.0  NaN
3  NaN  6.0  8.0
4  NaN  6.0  8.0

df = df[df > df.mean()].apply(lambda x: pd.Series(x.dropna().values))
print (df)
     a    b    c
0  4.0  9.0  6.0
1  7.0  6.0  8.0
2  NaN  6.0  8.0

能否添加数据样本和预期输出?
df = df[df > df.mean()].apply(lambda x: pd.Series(x.dropna().values))
print (df)
     a    b    c
0  4.0  9.0  6.0
1  7.0  6.0  8.0
print (df)
   a  b  c
0  4  5  6
1  1  2  3
2  7  9  2
3  3  6  8
4  3  6  8

print (df[df > df.mean()])
     a    b    c
0  4.0  NaN  6.0
1  NaN  NaN  NaN
2  7.0  9.0  NaN
3  NaN  6.0  8.0
4  NaN  6.0  8.0

df = df[df > df.mean()].apply(lambda x: pd.Series(x.dropna().values))
print (df)
     a    b    c
0  4.0  9.0  6.0
1  7.0  6.0  8.0
2  NaN  6.0  8.0