Python可以分为两行,并在语句为true时分配一个新数组
我的Python可以分为两行,并在语句为true时分配一个新数组,python,pandas,csv,email,compare,Python,Pandas,Csv,Email,Compare,我的csv文件中有10列。我想匹配Bird和Mail行如果客户的Bird是Parrot,我将接收此邮件并将其分配到新阵列 现在,这段代码找到与Bird匹配的邮件,我可以用print(row['Mail'])打印它,但我不能将它分配给新数组。如果我这样尝试,它会说 TypeError:“type”对象不支持项分配 我认为这一行将其更改为浮动,这就是问题所在 我希望它们作为一个数组,因为我将使用这个数组作为邮件列表,这就是为什么我还希望消除相同的值并在它们之间添加作为分隔符 谢谢你的帮助和建议。 代
csv
文件中有10列。我想匹配Bird
和Mail
行如果客户的Bird是Parrot,我将接收此邮件并将其分配到新阵列
现在,这段代码找到与Bird匹配的邮件,我可以用print(row['Mail'])
打印它,但我不能将它分配给新数组。如果我这样尝试,它会说
TypeError:“type”对象不支持项分配
我认为这一行将其更改为浮动,这就是问题所在
我希望它们作为一个数组,因为我将使用这个数组作为邮件列表,这就是为什么我还希望消除相同的值并在它们之间添加代码>作为分隔符
谢谢你的帮助和建议。
代码如下:
import pandas as pd
df = pd.read_csv("Reports.csv", sep='\s*,\s*', engine='python', encoding="ISO-8859-2")
df1 = df.loc[:, :'Bird']
x=0
for index, row in df1.iterrows():
if row['Name'] == 'Parrot':
for x in df1.iterrows() :
list[:1]=row['Mail']
x =+ 1
print(list)
样本数据:
somecolumn1 Mail somecolumn2 somecolumn3 Bird
1 asdf@gmaill.com Parrot
2 asdf@gmaill.com aaa
3 asdf@gmaill.com Parrot
4 asdf@gmaill.com zzzz
5 asdf@gmaill.com Parrot
6 NaN Parrot
7 acac@gmail.com Parrot
8 mnmn@gmail.com dddd
因此,确切地说,我希望创建这样的输出并消除重复(因为这些邮件中存在Parrot):
asdf@gmaill.com;acac@gmail.com
array_data = df.loc[df['Bird']=='Parrot', 'Mail'].tolist()
希望这对你有帮助
';'.join(df.loc[(df.Bird == 'Parrot')].Mail.dropna().drop_duplicates().tolist())
这将:
仅选择Bird
列中出现Parrot
的行
从Mail
列中提取值
删除空值(NaN
)
删除重复值
将其转换为列表
连接该列表中的所有值,并用分号分隔
您可以发布示例数据吗?您正在描述表格的方向。我(我们)想要样本数据来测试我们提出的任何解决方案。谢谢,我已经把它添加到我的问题中了。这太不可思议了,它完美地满足了我的要求,并且有很好的解释。这是你在这么短的时间内做的。非常感谢你。