首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python pandas中,如何在一个csv文件中并排堆叠(每次迭代)列中的数据帧?

问在python pandas中,如何在一个csv文件中并排堆叠(每次迭代)列中的数据帧?
EN

Stack Overflow用户
提问于 2016-07-20 09:58:44
回答 3查看 292关注 0票数 1

如果我可以在for循环中每次迭代生成两列数据,并且我想将其保存在csv文件中,那么如果在下一次迭代中我将生成两列数据将并排堆叠在同一个csv文件中(没有覆盖),该如何做?下一次迭代也是如此。我已经搜索了pandas.DataFrame(mode='a'),但它只垂直地(按行)追加列。我研究过连接pd.concat,然而,我不知道如何在超过两个dataframes的for循环中实现它。你有没有这方面的示例代码?或者分享一些想法?

代码语言:javascript
复制
import numpy as np, pandas as pd
for i in xrange (0, 4):
    x = pd.DataFrame(np.arange(10).reshape((5,1)))
    y = pd.DataFrame(np.arange(10).reshape((5,1)))

    data = np.array([x,y])
    df = pd.DataFrame(data.T, columns=['X','Y'])
EN

回答 3

Stack Overflow用户

发布于 2016-07-20 10:20:43

文件是只在长度上增长的一维对象。这些行仅由一个\n字符分隔。因此,在不重写文件的情况下不可能添加行。

您可以将文件加载到内存中,并使用dataframe进行连接,然后将其写回(某个其他文件)。这里:

代码语言:javascript
复制
import numpy as np, pandas as pd
a = pd.DataFrame(np.arange(10).reshape((5,2)))

b = pd.DataFrame(np.arange(20).reshape((5,4)))

pd.concat([a,b],axis=1)
票数 1
EN

Stack Overflow用户

发布于 2016-07-20 12:07:06

这是你想要的吗?

代码语言:javascript
复制
In [84]: %paste
df = pd.DataFrame(np.arange(10).reshape((5,2)))

for i in range (0, 4):
    new = pd.DataFrame(np.random.randint(0, 100, (5,2)))
    df = pd.concat([df, new], axis=1)
## -- End pasted text --

In [85]: df
Out[85]:
   0  1   0   1   0   1   0   1   0   1
0  0  1  50  82  24  53  84  65  59  48
1  2  3  26  37  83  28  86  59  38  33
2  4  5  12  25  19  39   1  36  26   9
3  6  7  35  17  46  27  53   5  97  52
4  8  9  45  17   3  85  55   7  94  97
票数 1
EN

Stack Overflow用户

发布于 2016-07-20 14:44:25

另一种选择:

代码语言:javascript
复制
def iter_stack(n, shape):
    df = pd.DataFrame(np.random.choice(range(10), shape)).T
    for _ in range(n-1):
        df = df.append(pd.DataFrame(np.random.choice(range(10), shape)).T)
    return df.T

iterstacking(5, (5, 2))

​

​

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

https://stackoverflow.com/questions/38471128

复制
相关文章

相似问题

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