【问题标题】:Create new dataframe columns from old dataframe rows using for loop --> N/A values使用 for 循环从旧数据帧行创建新数据帧列 --> N/A 值
【发布时间】:2017-10-30 15:27:50
【问题描述】:

我创建了一个数据框 df1:

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

然后创建了第二个数据框 df2,我想用 df 1 的行值填充它:

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。

>       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

过去 2 小时我一直在研究这个问题,但无法弄清楚为什么第 1 列之后的列没有填充值。

期望的输出:

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

【问题讨论】:

  • 可以加df1.head(n=5)
  • 是的,我添加了它
  • 您能否在问题中添加前 5 行所需的输出?
  • 是的,我将其编辑到我的问题中

标签: pandas for-loop dataframe


【解决方案1】:

我发现了问题。

我不得不使用.values

所以循环的最后一行必须是:

df2[y] = df1.iloc[3*x:3*x+3].values

我得到正确的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2021-08-03
    • 2021-04-15
    相关资源
    最近更新 更多