2017-03-09 33 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 

我想添加一個名爲「新列時間戳」。我想這個時間戳是一個隨機時間我用下面的代碼生成:

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 

如何確保我的函數計算新的時間戳我的數據幀的每一行,而不僅僅是一個時間戳儘快以上。 非常感謝!

+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))]