我有一个数据框如下所示
df =
value
2014-05-21 10:00:00 0.0
2014-05-21 11:00:00 3.4
2014-05-21 12:00:00 nan
2014-05-21 13:00:00 0.0
2014-05-21 14:00:00 nan
2014-05-21 15:00:00 1.0
..............
我想增加两列,
第一个名为“活动”的开关将值切换为1(如果为df.value
df_new =
value active unactive
2014-05-21 10:00:00 0.0 1 0
2014-05-21 11:00:00 3.4 1 0
2014-05-21 12:00:00 nan 0 -1
2014-05-21 13:00:00 0.0 1 0
2014-05-21 14:00:00 nan 0 -1
2014-05-21 15:00:00 1.0 1 0
............
我尝试使用for循环,但当时间序列很长时,它会占用太多时间。有人知道更好的方法吗?谢谢你的进步!
df['active'] = df['value'].notnull().astype(int)
以及:
df['unactive'] = -df['value'].isnull().astype(int)
(你也没有指定什么'active'应该当df.value
您可以使用df.value
In [44]: df['active'], df['inactive'] = (df.value >= 0).astype(int), -(~(df.value >= 0)).astype(int)
In [45]: df
Out[45]:
value active inactive
2014-05-21 10:00:00 0.0 1 0
11:00:00 3.4 1 0
12:00:00 NaN 0 -1
13:00:00 0.0 1 0
14:00:00 NaN 0 -1
15:00:00 1.0 1 0
我想根据列_1和列_2或列_3中的值创建一个新列“column_new”。如果列_1=='C',则列_new的值与列_2相同,但如果列_1=='G',则列_new的值与列_3相同。 我试过: 错误:值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 还尝试: 错误:值错误:数据帧的真值不明确。使用a.empty、a.bool()、a.
我有一个包含1.6x10^8记录的data.table,我想根据值为1的指示器列名称创建一个新的字符列。 例如 我希望它尽可能的健壮和干净,并且只依赖于data.table语法和/或其他有用的包/函数(例如dcast);我想避免创建大量的用户定义函数,因为考虑到我的数据表的大小,运行这个函数需要非常长的时间。 我已经查看了其他帖子,但我无法找到与我的情况和所需输出相似的东西。 任何帮助将不胜感激。
谈到R编码,我目前有点墨守成规。我一直在尝试使用mutate、seq和rep函数来生成一个新列,该列迭代多个列值和不同的条件,但结果并不正确。下面是我的一些数据片段: 我希望按类型和特征 ID 对 lipidName 进行分组,然后查看类型特征 ID2,而不是不正确的数据表。如果它们具有相同的类型和特征 ID,则将它们计为脂质名称的相同脂质。如果它们具有相同的类型和特征ID2,则将它们计为脂质名称
我有一个2010年和2019年的土地覆盖类型的数据框架。Pland代表总的土地覆盖价值,1等于该特定区域相对于ID的100%。这些计算是事先进行的,id代表每个几何形状。 我想执行一个函数,该函数生成另一个具有以下描述性名称的列,其中表示要替换的名称: 可复制代码:
我需要根据两个现有列的值添加一个新列。 我的数据集看起来像这样: 新列V3应遵循以下条件: ''' ''' 但是,当我尝试创建列时,我收到以下错误:“”评估错误:比较(1)仅适用于原子类型和列表类型。 理想情况下,结果应该是这样的: 非常感谢!
给定一个大小为N的非负整数的未排序数组,找到一个与给定数S相加的连续子数组。 输入: 输入的第一行包含一个整数T,表示测试用例的数量。接下来是T测试用例。每个测试用例由两行组成。每个测试用例的第一行是N和S,其中N是数组的大小,S是和。每个测试用例的第二行包含N个表示数组元素的空格分隔整数。 输出: 对于每个测试用例,在新行中,如果sum等于子数组,则从左侧打印第一个出现子数组的开始和结束位置(1