![](/img/trans.png)
[英]How to find matching rows in Pandas DataFrame with identical values with same/opposite signs in certain columns?
[英]How to get rows that has certain columns containing same values in pandas?
我有一個如下所示的數據
data = [(datetime.datetime(2021, 2, 10, 7, 49, 7, 118658), u'12.100.90.10', u'100.100.12.1', u'100.100.12.1', u'LT_DOWN'),
(datetime.datetime(2021, 2, 10, 7, 49, 14, 312273), u'12.100.90.10', u'100.100.12.1', u'100.100.12.1', u'LT_UP'),
(datetime.datetime(2021, 2, 10, 7, 49, 21, 535932), u'12.100.90.10', u'100.100.12.1', u'100.100.22.1', u'LT_UP'),
(datetime.datetime(2021, 2, 10, 7, 50, 28, 264042), u'12.100.90.10', u'100.100.12.1', u'100.100.32.1', u'LT_DOWN'),
(datetime.datetime(2021, 2, 10, 7, 50, 28, 725961), u'12.100.90.10', u'100.100.12.1', u'100.100.32.1', u'PL_DOWN'),
(datetime.datetime(2021, 2, 10, 7, 50, 32, 450853), u'10.100.80.10', u'10.55.10.1', u'100.100.12.1', u'PL_LOW'),
(datetime.datetime(2021, 2, 10, 7, 51, 32, 450853), u'10.10.80.10', u'10.55.10.1', u'100.100.12.1', u'MA_HIGH'),
(datetime.datetime(2021, 2, 10, 7, 52, 34, 264042), u'10.10.80.10', u'10.55.10.1', u'10.55.10.1', u'PL_DOWN'),
]
這是加載 pandas 時的樣子
df = pd.DataFrame(data)
df.columns = ["date", "start", "end", "end2", "type"]
# drop duplicate rows
df = df.drop_duplicates()
date start end end2 type
0 2021-02-10 07:49:07.118658 12.100.90.10 100.100.12.1 100.100.12.1 LT_DOWN
1 2021-02-10 07:49:14.312273 12.100.90.10 100.100.12.1 100.100.12.1 LT_UP
2 2021-02-10 07:49:21.535932 12.100.90.10 100.100.12.1 100.100.22.1 LT_UP
3 2021-02-10 07:50:28.264042 12.100.90.10 100.100.12.1 100.100.32.1 LT_DOWN
4 2021-02-10 07:50:28.725961 12.100.90.10 100.100.12.1 100.100.32.1 PL_DOWN
5 2021-02-10 07:50:32.450853 10.100.80.10 10.55.10.1 100.100.12.1 PL_LOW
6 2021-02-10 07:51:32.450853 10.10.80.10 10.55.10.1 100.100.12.1 MA_HIGH
7 2021-02-10 07:52:34.264042 10.10.80.10 10.55.10.1 100.55.10.1 PL_DOWN
現在我只想 select 行的end
和end2
列包含相同的值。 所以我的 output 將是
date start end end2 type
0 2021-02-10 07:49:07.118658 12.100.90.10 100.100.12.1 100.100.12.1 LT_DOWN
1 2021-02-10 07:49:14.312273 12.100.90.10 100.100.12.1 100.100.12.1 LT_UP
2 2021-02-10 07:52:34.264042 10.10.80.10 10.55.10.1 10.55.10.1 PL_DOWN
現在根據stackoverflow上的this question Get rows that have the same value across its columns in pandas我可以這樣做來檢查所有列中的相似值。
df[df.apply(pd.Series.nunique, axis=1) == 1]
但就我而言,我希望此檢查僅限於某些列。
我該怎么做呢?
只需使用遮罩。
df[df.end == df.end2]
df = df.loc[(df['end'] == df['end2'])]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.