我希望不计算列中的行数,从数据中创建一个新列,然后根据文件中已存在的列绘制新列。
我已经写了如下脚本的一部分:
import pandas as pd
import numpy as np
from sys import argv
from pylab import *
import csv
script, filename = argv
# read flash.dat to a list of lists
datContent = [i.strip().split() for i in open("./flash.dat").readlines()]
# write it as a new CSV file
with open("./flash.dat", "wb") as f:
writer = csv.writer(f)
writer.writerows(datContent)
def your_func(row):
return (len(dataframe.axes[0]))
columns_to_keep = ['#time']
dataframe = pd.read_csv("./flash.csv", usecols=columns_to_keep)
dataframe['time_interval(dt)'] = dataframe['#time'].diff()
dataframe
dataframe['rowcount'] = dataframe.apply(your_func, axis=1)
dataframe.plot(x='rowcount', y='time_interval(dt)', style='r')
print dataframe
show()
现在的问题是,它一次给我总行数,而不是逐行递增计数,我的输出中的左列确实有增量行数,但我不能标记它,因此无法使用情节。一些输出行在这里:
#time time_interval(dt) rowcount
0 0.000000e+00 NaN 10216
1 1.000000e-07 1.000000e-07 10216
2 2.200000e-07 1.200000e-07 10216
3 3.640000e-07 1.440000e-07 10216
4 5.368000e-07 1.728000e-07 10216
5 7.441600e-07 2.073600e-07 10216
6 9.929920e-07 2.488320e-07 10216
7 1.291590e-06 2.985984e-07 10216
8 1.649908e-06 3.583181e-07 10216
9 2.079890e-06 4.299817e-07 10216
10 2.595868e-06 5.159780e-07 10216
11 3.215042e-06 6.191736e-07 10216
我想,如果我想针对新列'time interval_(dt)'
绘制数据'rowcount'
,我不得不创建一个循环或者一个数组,它在读取数据行时不会保存任何行-明智的。我在这里分享文件:
https://www.dropbox.com/s/w4jbxmln9e83355/flash.dat?dl=0
请帮我制作行数的列。感谢。