Python 将指定值添加到数据帧中的每个

Python 将指定值添加到数据帧中的每个,python,pandas,datetime,time,Python,Pandas,Datetime,Time,我对可用的行进行了迭代,但这似乎不是最理想的方法——这需要花费很长时间 熊猫中是否有特殊的方法来做这件事 INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S") #NEED TO ADD DATA FROM THAT COLUMN df = pd.read_csv(dataset_path, delimiter=',',skiprows=range(0,1),names=['TCOUNT','

我对可用的行进行了迭代,但这似乎不是最理想的方法——这需要花费很长时间

熊猫中是否有特殊的方法来做这件事

INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S")
#NEED TO ADD DATA FROM THAT COLUMN

df = pd.read_csv(dataset_path, delimiter=',',skiprows=range(0,1),names=['TCOUNT','CORE','COUNTER','EMPTY','NAME','TSTAMP','MULT','STAMPME'])
df = df.drop('MULT',1)
df = df.drop('EMPTY',1)
df = df.drop('TSTAMP', 1)
for index, row in df.iterrows():
    TMP_TIME = INIT_TIME + datetime.timedelta(seconds=row['TCOUNT'])
    df['STAMPME'] = TMP_TIME.strftime("%s")
此外,我添加的日期时间采用以下格式

2017-05-11 11:12:37.100192 1494493957
2017-05-11 11:12:37.200541 1494493957

因此unix时间戳是相同的(而且是正确的),但是有更好的方法来表示它吗?

我会像这样重写您的代码

INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S")
INIT_TIME = pd.to_datetime(INIT_TIME)

df = pd.read_csv(
    dataset_path, delimiter=',',skiprows=range(0,1),
    names=['TCOUNT','CORE','COUNTER','EMPTY','NAME','TSTAMP','MULT','STAMPME']
)
df = df.drop(['MULT', 'EMPTY', 'TSTAMP'], 1)
df['STAMPME'] = pd.to_timedelta(df['TCOUNT'], 's') + INIT_TIME

假设datetimes正确地反映了您正在尝试做的事情,那么对于熊猫,您应该能够做到:

df['STAMPME'] = df['TCOUNT'].apply(lambda x: (datetime.timedelta(seconds=x) + INIT_TIME).strftime("%s"))
如上所述,您不应该使用iterrows()修改正在迭代的DF。如果需要逐行迭代(而不是使用apply方法),可以使用另一个数据对象(例如列表)来保留正在计算的值,然后从中创建一个新列


另外,为了便于将来参考,itertuples()方法比iterrows()更快,尽管它要求您知道每列的索引(即,行[x]而不是行['name'])。

谢谢。时间戳问题怎么样。您对此有何看法?@tandem将添加熊猫时间戳。它们将看起来不同,属于约会类型。我不太清楚你在问什么。而且,
df['STAMPME']=pd.to_timedelta(df['TCOUNT'],'s')+INIT_TIME
的计算不会产生unix时间戳。问题仍然是,如何在unix时间戳中获得毫秒级精度python@tandem这对你有用吗?这似乎更有可能,但对我没有帮助。我试过一点。嗨@tandem,那么关于datetimes,你介意分享一下你在这里想要实现的目标吗?