使用pandas基于条件将csv值附加到列表中

时间:2018-04-15 16:45:45

标签: python list pandas function

我试图打开一个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)

1 个答案:

答案 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]