如果我可以在for循环中每次迭代生成两列数据,并且我想将其保存在csv文件中,那么如果在下一次迭代中我将生成两列数据将并排堆叠在同一个csv文件中(没有覆盖),该如何做?下一次迭代也是如此。我已经搜索了pandas.DataFrame(mode='a'),但它只垂直地(按行)追加列。我研究过连接pd.concat,然而,我不知道如何在超过两个dataframes的for循环中实现它。你有没有这方面的示例代码?或者分享一些想法?
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'])发布于 2016-07-20 10:20:43
文件是只在长度上增长的一维对象。这些行仅由一个\n字符分隔。因此,在不重写文件的情况下不可能添加行。
您可以将文件加载到内存中,并使用dataframe进行连接,然后将其写回(某个其他文件)。这里:
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)发布于 2016-07-20 12:07:06
这是你想要的吗?
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发布于 2016-07-20 14:44:25
另一种选择:
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))

https://stackoverflow.com/questions/38471128
复制相似问题