Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当一列中的值将wrt更改为“ID”列中的值时,创建新的“更改”列_Python_Pandas_Data Analysis - Fatal编程技术网

Python 当一列中的值将wrt更改为“ID”列中的值时,创建新的“更改”列

Python 当一列中的值将wrt更改为“ID”列中的值时,创建新的“更改”列,python,pandas,data-analysis,Python,Pandas,Data Analysis,我需要创建一个新列“Change”,当“Feature”列中的值更改为“ID”列中的特定值时,该列将更新。 我拥有的数据帧: ID Feature 1 0 1 0 1 1 1 1 2 0 2 0 2 1 2 2 我想要的结果数据帧: ID Feature Change 1 0 no_change 1 0 no_change 1 1 change 1 1 no_change 2 0 no_change 2

我需要创建一个新列“Change”,当“Feature”列中的值更改为“ID”列中的特定值时,该列将更新。 我拥有的数据帧:

ID Feature 
1  0
1  0 
1  1
1  1
2  0
2  0
2  1
2  2
我想要的结果数据帧:

ID Feature Change
1  0       no_change
1  0       no_change
1  1       change
1  1       no_change
2  0       no_change
2  0       no_change
2  1       change
2  2       change

提前感谢。

比较各组掩码的移位值和回补缺失值,并传递到:


比较移位值和回补缺失值,每组掩码和传递到:

您可以使用ID列上的group,并使用获取上一行的差异,用0填充空值,并将其中行不等于0的部分指定为change,将其余部分指定为NOU change

您可以使用ID列上的group,并使用获取上一行的差异,用0填充空值,并将其中行不等于0的部分指定为change,将其余部分指定为NOU change


那就行了。非常感谢@RavinderSingh13-超级,我真的很喜欢你们两种解决方案,这是超级!谢谢你为我们俩;那就行了。非常感谢@RavinderSingh13-超级,我真的很喜欢你们两种解决方案,这是超级!谢谢你为我们俩;
mask = df.groupby('ID')['Feature'].apply(lambda x: x.shift().bfill()).eq(df['Feature'])
df['Change'] = np.where(mask, 'no_change', 'change')
print (df)
   ID  Feature     Change
0   1        0  no_change
1   1        0  no_change
2   1        1     change
3   1        1  no_change
4   2        0  no_change
5   2        0  no_change
6   2        1     change
7   2        2     change
df['Change']  = np.where(df.groupby("ID")['Feature'].diff().fillna(0).ne(0),
                         "change","no_change")
print(df)

   ID  Feature     Change
0   1        0  no_change
1   1        0  no_change
2   1        1     change
3   1        1  no_change
4   2        0  no_change
5   2        0  no_change
6   2        1     change
7   2        2     change