【问题标题】:combine row from csv with python将csv中的行与python结合起来
【发布时间】:2018-11-22 03:11:11
【问题描述】:

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

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

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

谢谢你的回答

【问题讨论】:

  • 好的,分组 3 行?
  • 您需要发布一些进展。这个问题似乎是要求人们为您编写程序。显然,您将需要知道如何在循环时一次读取一行文件。您可能需要在循环时构建一个新的字符串列表。试一试,用你最初的尝试更新问题,你很有可能会得到一些帮助。

标签: python excel pandas csv for-loop


【解决方案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                                    

【讨论】:

  • 哦,我明白了。非常感谢。
猜你喜欢
  • 2020-01-23
  • 2013-03-07
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多