例如下面的数据框我有这个
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
如果我有一千行,我怎么得到答案
谢谢你的回答
答案 0 :(得分:1)
将pd.concat
与axis=1
和DataFrame.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