2017-03-09 8 views
0

私のお気に入りのパンダファイルに新しい値を追加しようとしています。私のパンダのファイルは、私は次のコードを使用して読んで.CSVファイルです:パンダ - 関数を使用して列の値を決定します

import pandas as pd 
import numpy as np 
import csv 

df = pd.read_csv('coordinatesCSV.csv', sep=';', header=None) 
df.columns = ['Longitude','Lattitude'] 

df.head() 

Longitude Lattitude 
0 52.379512 4.896694 
1 52.379250 4.896995 
2 52.379289 4.897574 
3 52.378844 4.897918 
4 52.378844 4.897918 

を次のようにパンダデータフレームの.head一部が見えます私は 'という名前の新しい列を追加したいですタイムスタンプ '。私は、このタイムスタンプは、私は次のコードを使用して生成するランダムな時間になりたい:

def random_date(start,l): 
    current = start 
    while l >= 0: 
    current = current + datetime.timedelta(minutes=randrange(10)) 
    yield current 
    l-=1 

for x in reversed(list(random_date(startDate,1))): 
    df['Timestamp'] = x 

私の機能に問題は、それが唯一のランダムな時間を計算し、私は持っているすべての行の値としてこれを設定していることです次のように私のパンダのデータフレームは、私のデータフレームだから今になります

Longitude Lattitude Timestamp 
0 52.379512 4.896694 2013-09-20 13:00:00 
1 52.379250 4.896995 2013-09-20 13:00:00 
2 52.379289 4.897574 2013-09-20 13:00:00 
3 52.378844 4.897918 2013-09-20 13:00:00 
4 52.378844 4.897918 2013-09-20 13:00:00 

がどのように私は私の機能はすべての私のデータフレームの列とすぐ上記だけではなく、1つのタイムスタンプのための新しいタイムスタンプを計算してくださいます。 ありがとうございます!

+0

私は眠っていた気にしないが、私のコードを調整することによってそれを解決: DF [ 'タイムスタンプ'] = random_date(たstartDate、1) –

答えて

0

df['Timestamp'] = xと記述すると、Seriesのすべてのエントリをxに設定します。代わりに、あなたの関数を使用する一つの方法は、単純にそうする

df['Timestamp'] = list(random_date(startDate, len(df) - 1))[::-1] 
0

一つの方法は、(たstartDateがあまりにも列であることを仮定した場合)になりますようにするだろう

df['Timestamp'] = df['startDate'].map(random_date) 

別のオプション(たstartDateがあると仮定して定数)は、データフレームと同じサイズのリストを作成することです。次に、そのリストを列に割り当てます。

df['Timestamp'] = [random_date(startDate,1) for _ in xrange(len(df))] 
関連する問題