使用 pandas 根据条件将 csv 值附加到列表

Posted

技术标签:

【中文标题】使用 pandas 根据条件将 csv 值附加到列表【英文标题】:Appending csv values to list based on condition using pandas 【发布时间】: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)

【问题讨论】:

【参考方案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]

【讨论】:

我看不懂,你可以在代码中进行编辑吗?

以上是关于使用 pandas 根据条件将 csv 值附加到列表的主要内容,如果未能解决你的问题,请参考以下文章

将多个值添加到列中 - Pandas

Pandas 将具有多个值的行数据合并到列的 Python 列表中

如何使用 pandas 将新的数据帧行附加到 csv?

使用 pandas 将不同位置的行附加到现有的 csv 文件

如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件

将 pandas DataFrame 列附加到 CSV