如何将给定 Dataframe 的第一行和最后一行提取为panda中的新 Dataframe ?
我尝试使用iloc
来选择所需的行,然后使用concat
,如下所示:
df=pd.DataFrame({'a':range(1,5), 'b':['a','b','c','d']})
pd.concat([df.iloc[0,:], df.iloc[-1,:]])
但这并没有产生Pandas的 Dataframe :
a 1
b a
a 4
b d
dtype: object
7条答案
按热度按时间xbp102n01#
我认为最简单的方法是
.iloc[[0, -1]]
。ffdz8vbo2#
也可以使用
head
和tail
:nue99wik3#
如果框架只包含一行,则接受的答案复制第一行。
df[0::len(df)-1 if len(df) > 1 else 1]
甚至对单行 Dataframe 也有效。
示例:对于以下 Dataframe ,这不会创建副本:
而这会:
因为单行同时是第一行和最后一行。
sigwle7e4#
我认为您可以尝试将参数
axis=1
添加到concat
中,因为df.iloc[0,:]
和df.iloc[-1,:]
的输出是Series
,并通过T
进行转置:holgip5t5#
或者,您可以使用
take
:1aaf6o9v6#
以下是与大型数据集相同的样式:
输出:
zpf6vheq7#
我觉得这是一个很有用的问题,我个人比较喜欢看到 Dataframe 的前n行和最后n行,而不是用
.head()
或.tail()
,我发现比
pd.concat
稍快。下面是一个测试。在我的例子中,与
pd.concat()
相比,df.drop(df.index[1:-1])
花费了一半的时间。希望这个答案还能有用。