首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从pandas dataframe中提取每4行的第一个值,以生成新的dataframe

从pandas dataframe中提取每4行的第一个值,以生成新的dataframe
EN

Stack Overflow用户
提问于 2019-11-05 22:52:04
回答 4查看 122关注 0票数 1

我使用了"pandas.read_csv“,数据如下所示

代码语言:javascript
运行
复制
   A     B  C       D
00  2019-2  3  7           7
01  2019-1  3  3           6
02  2018-4  3  4           6
03  2018-3  3  5           6
04  2018-2  3  6           None
05  2018-1  3  None        7
06  2017-4  3  5           6
07  2017-3  3  4           5
08  2017-2  3  3           5
09  2017-1  3  4           5
10  2016-4  3  3           4
11  2016-3  3  2           4
12  2016-2  4  5           5
13  2016-1  4  3           7
14  2015-4  4  4           11
15  2015-3  4  2           5
16  2015-2  4  None      5
17  2015-1  3  1           None

如何将每4行的第一个数据提取到新的数据帧中?它有18行。18不能被4整除,所以我想抛出row16,row17

我想要的结果是这样的

代码语言:javascript
运行
复制
   A     B  C       D
00  2019-2  3  7           7
04  2018-2  3  6           0
08  2017-2  3  3           5
12  2016-2  4  5           5

我只是试着

代码语言:javascript
运行
复制
N = 4

#first remove last rows if remainders
df = df.iloc[:len(df) // N * N]

#convert to numeric
df['A'] = pd.to_numeric(df['C'], errors='coerce').fillna(0)
df['B'] = pd.to_numeric(df['C'], errors='coerce').fillna(0)
df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0)
df['D'] = pd.to_numeric(df['C'], errors='coerce').fillna(0)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-05 22:55:10

IIUC我们可以在groupby之前对df进行切片。

代码语言:javascript
运行
复制
n=(len(df)//4)*4
df=df.iloc[:n, :].groupby(np.arange(n) // 4).head(1).replace('None',0)
Out[13]: 
         A  B  C  D
0   2019-2  3  7  7
4   2018-2  3  6  0
8   2017-2  3  3  5
12  2016-2  4  5  5
票数 3
EN

Stack Overflow用户

发布于 2019-11-05 23:08:50

您可以通过提供iloc列表来选择多行。所以

代码语言:javascript
运行
复制
df.iloc[[i * n for i in range(len(df) // n)]].replace('None',0)

应该这样做,即使df的长度是n的倍数。

票数 1
EN

Stack Overflow用户

发布于 2019-11-05 23:03:05

这也行得通:

代码语言:javascript
运行
复制
    df.iloc[df.index[::4]].fillna(0)[:-1]

输出:

代码语言:javascript
运行
复制
0           A  B  C     D
index                    
00     2019-2  3  7     7
04     2018-2  3  6     0
08     2017-2  3  3     5
12     2016-2  4  5     5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58713902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档