获取连续行数据不同的列列表
Get list of columns in which data differs for consecutive rows
我有一个 table 在连续的行中有重复的行。具有相同 'id' 的行应该在其他 columns.But 中具有重复数据,其中很少有数据不正确的行。例如 -
id Name Age
1 Ram 12
1 Ram 10
2 Shyam 11
2 Yam 11
3 Ravi 23
3 Ravi 23
4 Harsh 34
4 Harsh 34
我需要知道连续行的列不同的列。
我需要的最终输出 -
id Name Age DifferentColumn
1 Ram 12
1 Ram 10 Age
2 Shyam 11
2 Yam 11 Name
3 Ravi 23
3 Ravi 23
4 Harsh 34
4 Krish 54 Name,Age
我可以使用 'petl' 或 'pandas',但我的方法应该是什么?
好的,这有效
id Name Age
0 1 Ram 12
1 1 Ram 10
2 2 Shyam 11
3 2 Yam 11
4 3 Ravi 23
5 3 Ravi 23
6 4 Harsh 34
7 4 Krish 54
df['Match'] = df.groupby('id').apply(lambda x: [' ','Name,Age'] if ((len(set(x.Name)) > 1) and (len(set(x.Age)) > 1)) else [' ','Age'] if len(set(x.Age)) > 1 else [' ','Name'] if ((len(set(x.Name)) > 1)) else [' ',' ']).reset_index(name='Match').apply(lambda x: pd.Series(x.Match), axis=1).stack().reset_index(drop=True)
Whats going on
pd.groupby
按 id,然后直接 if 条件来验证姓名和年龄不同的地方,或者 same.Steps 创建如下所示的内容
id Match
0 1 [ , Age]
1 2 [ , Name]
2 3 [ , ]
3 4 [ , Name,Age]
接下来,只需打开列表并将它们堆叠起来即可。
输出
id Name Age Match
0 1 Ram 12
1 1 Ram 10 Age
2 2 Shyam 11
3 2 Yam 11 Name
4 3 Ravi 23
5 3 Ravi 23
6 4 Harsh 34
7 4 Krish 54 Name,Age
我有一个 table 在连续的行中有重复的行。具有相同 'id' 的行应该在其他 columns.But 中具有重复数据,其中很少有数据不正确的行。例如 -
id Name Age
1 Ram 12
1 Ram 10
2 Shyam 11
2 Yam 11
3 Ravi 23
3 Ravi 23
4 Harsh 34
4 Harsh 34
我需要知道连续行的列不同的列。
我需要的最终输出 -
id Name Age DifferentColumn
1 Ram 12
1 Ram 10 Age
2 Shyam 11
2 Yam 11 Name
3 Ravi 23
3 Ravi 23
4 Harsh 34
4 Krish 54 Name,Age
我可以使用 'petl' 或 'pandas',但我的方法应该是什么?
好的,这有效
id Name Age
0 1 Ram 12
1 1 Ram 10
2 2 Shyam 11
3 2 Yam 11
4 3 Ravi 23
5 3 Ravi 23
6 4 Harsh 34
7 4 Krish 54
df['Match'] = df.groupby('id').apply(lambda x: [' ','Name,Age'] if ((len(set(x.Name)) > 1) and (len(set(x.Age)) > 1)) else [' ','Age'] if len(set(x.Age)) > 1 else [' ','Name'] if ((len(set(x.Name)) > 1)) else [' ',' ']).reset_index(name='Match').apply(lambda x: pd.Series(x.Match), axis=1).stack().reset_index(drop=True)
Whats going on
pd.groupby
按 id,然后直接 if 条件来验证姓名和年龄不同的地方,或者 same.Steps 创建如下所示的内容
id Match
0 1 [ , Age]
1 2 [ , Name]
2 3 [ , ]
3 4 [ , Name,Age]
接下来,只需打开列表并将它们堆叠起来即可。
输出
id Name Age Match
0 1 Ram 12
1 1 Ram 10 Age
2 2 Shyam 11
3 2 Yam 11 Name
4 3 Ravi 23
5 3 Ravi 23
6 4 Harsh 34
7 4 Krish 54 Name,Age