【发布时间】:2019-08-06 12:38:57
【问题描述】:
我有一个数据框,它显示了一些具有累积值的特征。我需要识别这些特征以恢复累积值。 这是我的数据集的样子(加上大约 50 个变量):
a b
346 17
76 52
459 70
680 96
679 167
246 180
我希望达到的是:
a b
346 17
76 35
459 18
680 26
679 71
246 13
我似乎是这个答案,但它首先还原值,然后尝试识别列。我不能反过来做吗?先识别特征再还原值?
我现在要做的是运行以下代码,以便为我提供具有累积值的功能名称:
def accmulate_col(value):
count = 0
count_1 = False
name = []
for i in range(len(value)-1):
if value[i+1]-value[i] >= 0:
count += 1
if value[i+1]-value[i] > 0:
count_1 = True
name.append(1) if count == len(value)-1 and count_1 else name.append(0)
return name
df.apply(accmulate_col)
之后,我将这些特征名称手动保存在一个名为 cum_features 的列表中并还原这些值,从而创建所需的数据集:
df_clean = df.copy()
df_clean[cum_cols] = df_clean[cum_features].apply(lambda col: np.diff(col, prepend=0))
有没有更好的方法来解决我的问题?
【问题讨论】:
-
您绝对应该支持差异计算函数而不是自己进行迭代。话虽如此,您能否提供一个示例数据框来使用?
标签: python pandas dataframe diff