如何将给定数据帧的第一行和最后一行作为pandas中的新数据帧提取?
我试图用来iloc选择所需的行,然后concat如下所示:
df=pd.DataFrame({'a':range(1,5), 'b':['a','b','c','d']})
pd.concat([df.iloc[0,:], df.iloc[-1,:]])
Run Code Online (Sandbox Code Playgroud)
但是这不会产生一个熊猫数据帧:
a 1
b a
a 4
b d
dtype: object
Run Code Online (Sandbox Code Playgroud)
su7*_*u7k 68
我认为最简单的方法是.iloc[[0, -1]].
df = pd.DataFrame({'a':range(1,5), 'b':['a','b','c','d']})
df2 = df.iloc[[0, -1]]
print df2
a b
0 1 a
3 4 d
Run Code Online (Sandbox Code Playgroud)
Col*_*vel 29
您还可以使用head和tail:
In [29]: pd.concat([df.head(1), df.tail(1)])
Out[29]:
a b
0 1 a
3 4 d
Run Code Online (Sandbox Code Playgroud)
joh*_*mue 17
如果框架仅包含一行,则接受的答案将复制第一行。如果这是一个问题
df[0::len(df)-1 if len(df) > 1 else 1]
甚至适用于单行数据帧。
示例:对于以下数据帧,这不会创建重复项:
df = pd.DataFrame({'a': [1], 'b':['a']})
df2 = df[0::len(df)-1 if len(df) > 1 else 1]
print df2
a b
0 1 a
Run Code Online (Sandbox Code Playgroud)
而这样做:
df3 = df.iloc[[0, -1]]
print df3
a b
0 1 a
0 1 a
Run Code Online (Sandbox Code Playgroud)
因为单行同时是第一行和最后一行。
我认为你可以尝试添加参数axis=1到,因为和 的concat输出是并转置为:df.iloc[0,:]df.iloc[-1,:]SeriesT
print df.iloc[0,:]
a 1
b a
Name: 0, dtype: object
print df.iloc[-1,:]
a 4
b d
Name: 3, dtype: object
print pd.concat([df.iloc[0,:], df.iloc[-1,:]], axis=1)
0 3
a 1 4
b a d
print pd.concat([df.iloc[0,:], df.iloc[-1,:]], axis=1).T
a b
0 1 a
3 4 d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60447 次 |
| 最近记录: |