确定列值更改以及发生的更改
Determining column value change and which change takes place
我正在分析眼动数据。我有一个带有 'row' 列的 df,它告诉我查看了哪个图像。我有 9 张图片,属于 3 个类别。
Category 1 = [1,2,3]
Category 2 = [4,5,6]
Category 3 = [7,8,9]
我想要一个新列“更改”,它会在“roi”列中的数字发生变化时告诉我,以及变化是在类别内还是在类别之间。
如果列表类别 1 中的数字之间发生变化,则应显示 'C1'。
如果列表类别 2 中的数字之间发生变化,则应显示 'C2'。
如果变化发生在列表类别 3 中的数字之间,那么 'C3' 应该出现。
如果更改发生在不在同一个列表中的号码之间,则 'X'
应该会出现。
Roi =[3,3,3,2,2,5,5,6,6,9,7,1]
Change = ['nan','nan','nan','C1','nan','X','nan','C2','nan','X','C3','X']
zipped = list(zip(Roi, Change))
df = pd.DataFrame(zipped, columns=['Roi', 'Change'])
print(df)
Roi Change
0 3 nan
1 3 nan
2 3 nan
3 2 C1
4 2 nan
5 5 X
6 5 nan
7 6 C2
8 6 nan
9 9 X
10 7 C3
11 1 X
使用np.select
:
C1 = [1,2,3]
C2 = [4,5,6]
C3 = [7,8,9]
roi = df["Roi"]
prev_roi = roi.shift()
df["Change"] = np.select(
[
(roi == prev_roi) | prev_roi.isnull(),
roi.isin(C1) & prev_roi.isin(C1),
roi.isin(C2) & prev_roi.isin(C2),
roi.isin(C3) & prev_roi.isin(C3),
roi != prev_roi
],
[
"nan",
"C1",
"C2",
"C3",
"X",
],
)
我正在分析眼动数据。我有一个带有 'row' 列的 df,它告诉我查看了哪个图像。我有 9 张图片,属于 3 个类别。
Category 1 = [1,2,3]
Category 2 = [4,5,6]
Category 3 = [7,8,9]
我想要一个新列“更改”,它会在“roi”列中的数字发生变化时告诉我,以及变化是在类别内还是在类别之间。
如果列表类别 1 中的数字之间发生变化,则应显示 'C1'。
如果列表类别 2 中的数字之间发生变化,则应显示 'C2'。
如果变化发生在列表类别 3 中的数字之间,那么 'C3' 应该出现。
如果更改发生在不在同一个列表中的号码之间,则 'X' 应该会出现。
Roi =[3,3,3,2,2,5,5,6,6,9,7,1]
Change = ['nan','nan','nan','C1','nan','X','nan','C2','nan','X','C3','X']
zipped = list(zip(Roi, Change))
df = pd.DataFrame(zipped, columns=['Roi', 'Change'])
print(df)
Roi Change
0 3 nan
1 3 nan
2 3 nan
3 2 C1
4 2 nan
5 5 X
6 5 nan
7 6 C2
8 6 nan
9 9 X
10 7 C3
11 1 X
使用np.select
:
C1 = [1,2,3]
C2 = [4,5,6]
C3 = [7,8,9]
roi = df["Roi"]
prev_roi = roi.shift()
df["Change"] = np.select(
[
(roi == prev_roi) | prev_roi.isnull(),
roi.isin(C1) & prev_roi.isin(C1),
roi.isin(C2) & prev_roi.isin(C2),
roi.isin(C3) & prev_roi.isin(C3),
roi != prev_roi
],
[
"nan",
"C1",
"C2",
"C3",
"X",
],
)