将csv中的行与python组合在一起

时间:2018-06-12 16:32:03

标签: python excel pandas csv for-loop

例如下面的数据框我有这个

jan,feb,mar
AAA,BBB,CCC
Dog,Cat,Ant
111,222,333
Mon,Tue,Wed
1990,1991,1991
XXX,YYY,ZZZ

我想将第1行和第2行追加到第一行,依此类推

jan,feb,mar,AAA,BBB,CCC,Dog,Cat,Ant
AAA,BBB,CCC,Dog,Cat,Ant,111,222,333
Dog,Cat,Ant,111,222,333,Mon,Tue,Wed
111,222,333,Mon,Tue,Wed,1990,1991,1991
Mon,Tue,Wed,1990,1991,1991,XXX,YYY,ZZZ
1990,1991,1991
XXX,YYY,ZZZ

如果我有一千行,我怎么得到答案

谢谢你的回答

1 个答案:

答案 0 :(得分:1)

pd.concataxis=1DataFrame.shift()一起使用。

n = 3
df = pd.concat((df.shift(-i) for i in range(n)), 1)

完整示例:

import pandas as pd

data = '''\
jan,feb,mar
AAA,BBB,CCC
Dog,Cat,Ant
111,222,333
Mon,Tue,Wed
1990,1991,1991
XXX,YYY,ZZZ'''

fileobj = pd.compat.StringIO(data) # replace this with 'path/to/file'
df = pd.read_csv(fileobj, sep=',', header=None)

n = 3
df = pd.concat((df.shift(-i) for i in range(n)), 1)

# And some formatting...
df.columns = range(len(df.columns))
df.fillna('', inplace=True)

print(df)
# df.to_csv('output.csv', index=False, header=None) # output if you want.

返回:

      0     1     2     3     4     5     6     7     8
0   jan   feb   mar   AAA   BBB   CCC   Dog   Cat   Ant
1   AAA   BBB   CCC   Dog   Cat   Ant   111   222   333
2   Dog   Cat   Ant   111   222   333   Mon   Tue   Wed
3   111   222   333   Mon   Tue   Wed  1990  1991  1991
4   Mon   Tue   Wed  1990  1991  1991   XXX   YYY   ZZZ
5  1990  1991  1991   XXX   YYY   ZZZ                  
6   XXX   YYY   ZZZ