所以我有一个包含两列的数据框;变量名称和该变量的时间实例如下所示:
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数据框中实现这一点的任何想法?
欢呼声。
答案 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']]