numpy 我怎样才能看到两列之间是否有差异,如果有,向一个聚合列添加一个点,然后继续下两列

b4wnujal  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(113)

我的dataframe有1000个包含0-4之间的值的列。
| 城市|Q1| Q2|第三季度|Q4|聚合物|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 纽卡斯尔|2| 3| 3| 0| 0|
| 利物浦|4| 2| 1| 4| 0|
| 卡迪夫|2| 2| 2| 3| 0|
| 格拉斯哥|0| 1| 3| 1| 0|
每当两列不相等时,我想向Aggregate列添加+1。
| 城市|Q1| Q2|第三季度|Q4|聚合物|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 纽卡斯尔|2| 3| 3| 0| 2|
| 利物浦|4| 2| 1| 4| 3|
| 卡迪夫|2| 2| 2| 3| 1|
| 格拉斯哥|0| 1| 3| 1| 3|
我觉得这可以看作是:

if df['Q1'] != df['Q2']:
    df['Aggregate'] + 1
else:
     pass

然后:

if df['Q2'] != df['Q3']:
    df['Aggregate'] + 1
else:
     pass

我希望它能遍历所有1000列,这样我就可以量化每一行总共有多少更改。

neekobn8

neekobn81#

使用pandas,在您的情况下不需要循环。你可以试试这个:

qs = df.filter(like="Q") #or df.drop("City", axis=1)

df["Aggregate"] = qs.diff(axis=1).fillna(0).ne(0).cumsum(axis=1).iloc[:, -1]

输出:

print(df)

        City  Q1  Q2  Q3  Q4  Aggregate
0  Newcastle   2   3   3   0          2
1  Liverpool   4   2   1   4          3
2    Cardiff   2   2   2   3          1
3    Glasgow   0   1   3   1          3

相关问题