有没有办法从包含未命名列的表中筛选出行

2024-05-14 01:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试分析具有四个比较值的数据集的滚动相关性,但只需要包含“a”的行的输出

我使用命令newdf = df.rolling(3).corr()获得了数据帧

样本输入(随机数)

    a b c d 
1 a
1 b
1 c
1 d
2 a
2 b
2 c
2 d
3 a 
3 b   5 6 3
3 c   4 3 1 
3 d   3 4 2
4 a 1 3 5 6 
4 b 6 2 4 1 
4 c 8 6 6 7 
4 d 2 5 4 6 
5 a 2 5 4 1 
5 b 1 4 6 3
5 c 2 6 3 7
5 d 3 6 3 7

并且需要输出

    a b c d
1 a 1 3 5 6
2 a 2 5 4 1

我已经尝试过通过执行adf = newdf.filter(['a'], axis=0)来过滤它,但是这会去除所有内容,当对另一个轴执行时,它会按列过滤。不幸的是,包含值为a、b、c、d的行的列未命名,因此我无法单独筛选该列。但是,如果可以使用按索引列出的值翻转行和列以获得所需的输出,则这不会是一个问题


Tags: 数据命令内容dffilter行和列样本rolling
2条回答

尝试使用loc。将abcdabcd ...列作为索引,只使用loc

df.loc['a']

在您的案例中,问题的实际来源是您的数据帧 具有多个索引

所以当你试图执行你想要的newdf.filter(['a'], axis=0)时 将索引仅包含的行保留为“a”字符串

但由于数据帧有一个多索引,因此每行的 级别1也包含级别0的一些数字

要获得预期结果,请运行:

newdf.filter(like='a', axis=0)

可能后跟.dropna()

另一种解决方案是:

newdf.xs('a', level=1, drop_level=False)

相关问题 更多 >