使用 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 将具有多个值的行数据合并到列的 Python 列表中
使用 pandas 将不同位置的行附加到现有的 csv 文件