【发布时间】:2019-12-04 14:04:04
【问题描述】:
我有一个如下的 Excel 文件,其中包含多个信息:
Name list company
x [xyz,mno,pqr] xyz
y [abc,rst,hij] abc
x [xyz,mno,pqr] uvw
y [abc,rst,hij] def
x [xyz,mno,pqr] mno
y [abc,rst,hij] rst
从这个 excel 中,我想在名称列中应用过滤器并获取第一个值,然后想要检查一些东西,然后过滤第二个值等等,我用下面的示例来解释第一个值:
假设我从名称列中过滤了“x”,然后我有 3 行,所以从列表列(水平)中,我需要检查公司列中是否存在所有三个“xyz”、“mno”和“pqr”(垂直)与否。所以,这里“xyz”和“mno”出现在公司列的第一行和第三行,但“pqr”没有出现在任何行中。所以在输出中我想要“pqr”,如下所示:
Name list company Output
x [xyz,mno,pqr] xyz pqr
y [abc,rst,hij] abc hij
x [xyz,mno,pqr] uvw pqr
y [abc,rst,hij] def hij
x [xyz,mno,pqr] mno pqr
y [abc,rst,hij] rst hij
对我来说它看起来很复杂,我无法找到任何代码或解决方案。非常感谢您的帮助。
根据我使用以下代码的建议:
import pandas as pd
import numpy as np
frame=pd.read_excel("Book2.xlsx")
frame_Liste=frame.Liste.values.tolist()
frame_company=frame.company.values.tolist()
frame_col3=[]
for items in frame_Liste:
frame_col3.append(list(set(items)-set(frame_company)))
frame["output"]=frame_col3
frame.to_excel("df.xlsx", index = False)
但是我得到了输出,但是输出是错误的和奇怪的。我在下面向你展示输出:
【问题讨论】:
-
用 str.split 检查
-
df['Odd_One'] = df['list'].str.split(',',expand=True)[1]应该可以工作 -
您的第二个“x”有列表 [xyz,pqr],公司名称是“uvw”,您的 Odd_number 是“pqr”。公司名称是否有拼写错误,即应该是 xyz 吗?列表中是否可能不包括公司名称?
-
不,没有错字。列表就是这样,有一个很长的列表,我们需要通过过滤 name 列从中搜索奇数。这就像我们需要通过考虑垂直过滤的名称列从水平列表中搜索奇数。如果您有问题,请告诉我。
标签: python-3.x pandas python-2.7