我喜欢在 pandas 中使用 .head()
和 .tail()
函数来间接显示一定数量的行(有时我想要更少,有时我想要更多的!)。但是有没有办法对 DataFrame 的列执行此操作?
是的,我知道我可以更改显示选项,如:
pd.set_option('display.max_columns', 20)
但这太笨重了,不能一直在运行中更改,而且无论如何,它只会替换 .head()
功能,而不是 .tail()
功能。
我也知道这可以使用访问器来完成:
yourDF.iloc[:,:20]
模拟 .head(20) 和 yourDF.iloc[:,-20:]
模拟 .tail(20)。
它可能看起来像一小段代码,但老实说,它不像我使用 .head() 时那样直观和快速。
有这样的命令吗?我找不到!
最佳答案
不,Pandas 不提供此类方法,但您自己制作这些方法很容易:
import pandas as pd
def front(self, n):
return self.iloc[:, :n]
def back(self, n):
return self.iloc[:, -n:]
pd.DataFrame.front = front
pd.DataFrame.back = back
df = pd.DataFrame(np.random.randint(10, size=(4,10)))
因此现在所有 DataFrame 将拥有这些方法:
In [272]: df.front(4)
Out[272]:
0 1 2 3
0 2 5 2 8
1 9 9 1 3
2 7 0 7 4
3 8 3 9 2
In [273]: df.back(3)
Out[273]:
7 8 9
0 3 2 7
1 9 9 4
2 5 7 1
3 3 2 5
In [274]: df.front(4).back(2)
Out[274]:
2 3
0 2 8
1 1 3
2 7 4
3 9 2
如果您将代码放入实用程序模块中,例如 utils_pandas.py
,那么您可以使用 import 语句激活它:
import utils_pandas
关于python - 是否有 pandas 函数来显示前/后 n 列,如 .head() 和 .tail()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608310/