【问题标题】:Appending data to a dataframe but changing rows after certain # of columns将数据附加到数据框,但在某些列之后更改行
【发布时间】:2020-01-20 05:20:27
【问题描述】:

这是我编写的代码,它创建了 3 个变量的增量,用于 p 值计算,其中三个变量是 loc 值或指标或任何数字含义:

i = 0
k = 2
j = 2

result = []
df = pd.DataFrame()

while j < data.shape[1]:
    tstat, data_stat = ttest_ind_from_stats(data.loc[i][k], data.loc[i + 1][k], data.loc[i + 2][k], data.loc[i][j],
                                        data.loc[i + 1][j], data.loc[i + 2][j])
    result.append([data_stat])
    j+=1
    if j == 8:
        j = 2
        i = i + 3
    if i == data.shape[0]:
        k = k + 1
        i = 0
        if k > 7:
            break

data_result = pd.DataFrame(result)

data.shape[0] = 150data.shape[1] = 8 的位置。

此代码创建正确的 p 值,但作为 1800 行 x 1 列数据框。但是,我想打破生成的 df 以便代码生成六个不同的数据帧,每个数据帧都有data.shape[1]-2 列数(所以 6 列)。通过一些示例截图:

1) 我当前代码中的data_result 数据框:

1
0.658
0.1067
0.777
0.459
0.3307
1
0.622
0.4178
0.3158
0.7674
0.7426

2) 我想要什么:

col1    col2   col3    col4    col5    col6
1       0.658  0.1067  0.777   0.459   0.3307
1       0.622  0.4178  0.3158  0.7674  0.7426

代码中应该有六个上述数据帧。

3) 我最好在每个数据框的左侧添加一列,用于插入每一行的占位符值(截图省略)。这一步是可选的。

所以基本上,我将生成的数据帧除以每 6 行,将它们从单列转置为六列,然后重复接下来的六个值,依此类推。我想可能会创建一个系列或一个新的 df 直到 j = 8 然后逐行附加到整个 df,但不确定这是否可行或可能。谢谢!

编辑)

所以基本上,我想创建六个单独的数据框,每个数据框都有 50 行 x 6 列的形状。我当前的数据框有 1800 行 x 1 列。

【问题讨论】:

  • 如果您将数据(输入和输出)添加为文本而不是图片,您可能会获得更快的响应。
  • 感谢您的推荐。编辑了帖子

标签: python pandas dataframe


【解决方案1】:

对于第 2 点: 你可以用 numpy 试试:

import numpy as np
import pandas as pd

result_array= np.asarray(result)
# reshape for 150 rows and 6 columns
result_array.reshape(150,6)
#if number of row is undefined and 6 columns
#result_array.reshape(-1,6)

return pd.DataFrame(result_array)

对于第 3 点,我不确定,但是从数据框返回中,您可以做所有 pandas 允许的事情......

【讨论】:

    【解决方案2】:

    这将为您提供所需的 df(应归功于 Renaud)

    a = np.array(df)
    b= a.reshape(int(df.shape[0]/6),6)
    df_new = pd.DataFrame(b)
    df_new.columns =['col1','col2','col3','col4','col5','col6']
    df_new
    

    输出

       col1     col2    col3        col4    col5    col6
    0   1.0     0.658   0.106743    0.7770  0.4590  0.3307
    1   1.0     0.622   0.417800    0.3158  0.7674  0.7426
    

    【讨论】:

    • 对于 a.reshape(x,y) 参数,x 应该匹配什么?现在,我收到值错误,说不能将大小为 1800 的数组重新整形为形状 (25,6)。我猜形状不正确,因为我的帖子只有一部分数据。我想创建 6 个 dfs,每个都有形状(50 行,6 列,不计算标题)。
    • X 应该是你的数据框长度除以六(你想要的列数)。
    • 好吧,将其更改为 df.shape[0]*2 确实创建了一个 300 行 x 6 列的 df 但恐怕它是一个单一的数据框。是否可以创建六个单独的 dfs,每个 dfs 有 50 行 x 6 列的形状?
    • 看看这是否有助于将数据帧分成单独的块stackoverflow.com/questions/25290757/…
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多