在csv文件中打印新列,其前两个索引与另一列的差异

时间:2019-02-25 20:34:11

标签: python python-3.x pandas numpy

我有一个包含4列的csv文件-> Column1,Column2,Column3,Column4

假设csv文件中的数据当前为:

Column1  Column2  Column3  Column4
10       20       30       40
12       23       78       98
23       67       101      123

现在我要添加其他4个列,分别打印列的差异:

Column1  Column2  Column3  Column4  Column5  Column6  Column7  Column8
10       20       30       40       2        3        48       58 
12       23       78       98       11       44       23       25
23       67       101      123

我每隔几秒钟就会收到新的数据行,所以我想这样做,以便每次将新数据添加到column1-column4时,都会将差异添加到column5-column8。

现在我只是连续地逐行添加

data = [b, c, d, e]
with open('dataset.csv', 'a', newline='') as myfile:
             wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
             wr.writerow(data)

1 个答案:

答案 0 :(得分:2)

尝试一下:

from io import StringIO
import pandas as pd

#simulate importing csv file.
csvfile = StringIO("""Column1  Column2  Column3  Column4
10       20       30       40
12       23       78       98
23       67       101      123""")

df = pd.read_csv(csvfile, sep='\s\s+')
df

df_out = pd.concat([df, df.diff(1).shift(-1)], axis=1)
df_out.to_csv('Output.csv', index=False, sep='\t')

!more Output.csv

输出:

Column1 Column2 Column3 Column4 Column1 Column2 Column3 Column4
10      20      30      40      2.0     3.0     48.0    58.0
12      23      78      98      11.0    44.0    23.0    25.0
23      67      101     123