【问题标题】:Appending csv values to list based on condition using pandas使用 pandas 根据条件将 csv 值附加到列表
【发布时间】:2018-09-25 10:20:33
【问题描述】:

我试图打开一个 csv 文件 panda_try.csv。我想要做的是比较文件前两列中的元素并检查它们是否相等。如果它们相等,我想将它附加到一个名为selfloop_appender 的列表中,然后计算列表的长度。但是当我尝试“打印(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)

【问题讨论】:

    标签: python list pandas function


    【解决方案1】:

    你可以试试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]
    

    【讨论】:

    • 我看不懂,你可以在代码中进行编辑吗?
    猜你喜欢
    • 2018-02-08
    • 2021-11-23
    • 2019-04-22
    • 2015-03-06
    • 2017-11-11
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多