首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环-> N/A值从旧的dataframe行创建新的dataframe列

使用for循环-> N/A值从旧的dataframe行创建新的dataframe列
EN

Stack Overflow用户
提问于 2017-10-30 15:27:50
回答 1查看 232关注 0票数 1

我创建了一个dataframe df1:

代码语言:javascript
复制
df1 = pd.read_csv('FBK_var_conc_1.csv', names = ['Cycle', 'SQ'])  
df1 = df1['SQ'].copy()                            
df1 = df1.to_frame()                               
df1.head(n=10)


    SQ
0   2430.0
1   2870.0
2   2890.0
3   3270.0
4   3350.0
5   3520.0
6   26900.0
7   26300.0
8   28400.0
9   3230.0

然后创建了第二个dataframe df2,希望填充df1的行值:

代码语言:javascript
复制
df2 = pd.DataFrame()
for x in range(12):
    y='Experiment %d' % (x+1)
    df2[y]= df1.iloc[3*x:3*x+3]
df2

我从df2中的实验1-实验12中得到列名,第一列填充了正确的值,但是下面的所有列都填充了N/A。

代码语言:javascript
复制
>       Experiment 1    Experiment 2    Experiment 3    Experiment 4    Experiment 5    Experiment 6    Experiment 7    Experiment 8    Experiment 9    Experiment
> 10    Experiment 11   Experiment 12
>     0 2430.0  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
>     1 2870.0  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
>     2 2890.0  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

在过去的两个小时里,我一直在研究这个问题,但是不明白为什么列1后面的列没有填充值。

期望产出:

代码语言:javascript
复制
Experiment 1    Experiment 2    Experiment 3    Experiment 4    Experiment 5    Experiment 6    Experiment 7    Experiment 8    Experiment 9    Experiment 10   Experiment 11   Experiment 12
2430    3270    26900   3230    2940    243000  256000  249000  2880    26100   3890    33400
2870    3350    26300   3290    3180    242000  254000  250000  3390    27900   3730    30700
2890    3520    28400   3090    3140    253000  260000  237000  3510    27400   3760    29600
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-31 16:49:36

我发现了问题。

我不得不使用.values

因此,循环的最后一行必须是:

代码语言:javascript
复制
df2[y] = df1.iloc[3*x:3*x+3].values

我得到了正确的输出

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47018911

复制
相关文章

相似问题

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