我试图打开一个csv文件panda_try.csv
。我想要做的是比较文件的前两列中的元素,并检查它们是否相等。如果它们相等,我想将它附加到名为selfloop_appender
的列表中,然后计算列表的长度。但是当我尝试'print(selfloop_appender)'时,我不会得到任何输出和错误。任何帮助都会很棒。
import pandas as pd
df = pd.read_csv('/home/venkat/Desktop/panda_try.csv')
xy_data = df.iloc[:,0:2]
def self_loops(xy_data):
selfloop_appender = []
for i,j in xy_data:
if i == j:
selfloop_appender.append([i,j])
print("the number of self_loops are:") + len(str(selfloop_appender))
return selfloop_appender
self_loops(xy_data)
答案 0 :(得分:2)
您可以尝试nunique
,如果等于1,则表示i = j。
xy_data[xy_data.nunique(1)==1].iloc[:,1].tolist()
更新
df=pd.DataFrame({'A':[1,2,3],'B':[1,2,6]})
df.nunique(1)
Out[440]:
0 1
1 1
2 2
dtype: int64
如果返回1表示A = B
然后我们使用eq
(等于==
)来切片我们需要的行
df[df.nunique(1).eq(1)]
Out[442]:
A B
0 1 1
1 2 2
df[df.nunique(1).eq(1)].iloc[:,1]
Out[443]:
0 1
1 2
Name: B, dtype: int64
df[df.nunique(1).eq(1)].iloc[:,1].tolist()
Out[444]: [1, 2]