计算列中的行并在pandas中创建一个新列

时间:2016-10-01 01:08:45

标签: python pandas dataframe rowcount

我希望不计算列中的行数,从数据中创建一个新列,然后根据文件中已存在的列绘制新列。

我已经写了如下脚本的一部分:

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

请帮我制作行数的列。感谢。

0 个答案:

没有答案