将布尔值列添加到包含变量和时间列的数据框中

时间:2017-07-03 08:36:48

标签: python pandas dataframe

所以我有一个包含两列的数据框;变量名称和该变量的时间实例如下所示:

Variable  Time
v1        t1
v2        t2
v3        t3

我想添加另一个带有值的列,此列将具有布尔值(1或0),1表示该值已出现(该时间实例),并且在该时间实例之外为零,(t + 1) )。像这样:

Variable  Time   Value
v1        t1     1
v1        t1+1   0
v2        t2     1
v2        t2+1   0
v3        t3     1
v3        t3+1   0

关于如何在python数据框中实现这一点的任何想法?
欢呼声。

2 个答案:

答案 0 :(得分:1)

如果变量列已排序,请使用duplicated进行掩码,将其反转~并投射到int - True s为1 s和{{ 1}}是False s:

0

答案 1 :(得分:0)

如果您使用的是pandas,则会执行您要求的操作:

import pandas as pd

df = pd.DataFrame({'Variable': ['v1', 'v2', 'v3'], 'Time': ['t1', 't2', 't3']})
df['Value'] = 1

newTime = df.Time.apply(lambda x: x + '+1')
df2 = df.copy()
df2.Time = newTime
df2.Value = 0

df = df.append(df2).sort_values('Variable').reset_index(drop=True)

df = df[['Variable', 'Time' , 'Value']]