[英]Why cant I get my output dataframe to convert to a csv? AttributeError: 'NoneType' object has no attribute 'to_csv'
[英]AttributeError: 'set' object has no attribute 'to_csv'
今天是个好日子! 我有 2 个带有数字的文件 txt 和 csv,我想从与第二个文件中的数字匹配的第一个文件号中进行比较和删除。 Data 和 df_row 是数据报。
例如:我的第一个文件包括
12354564
25345754
23545454
11565654
46456456
我的第二个文件包括
23545454
11565654
46456456
所以结果应该是
12354564
25345754
我的代码:
result = set(data).difference(set(df_row))
result.to_csv("part1left.txt")
但有一个错误 AttributeError: 'set' object has no attribute 'to_csv'
如果data
和df_row
是您的解决方案的Series
,则需要将输出转换为list
,然后转换为Series
:
result = set(data).difference(set(df_row))
pd.Series(list(result)).to_csv("part1left.txt", index=False)
或者在纯 python 中写入 set 到文件:
result = set(data).difference(set(df_row))
with open("part1left.txt", 'w') as file_handler:
for item in result:
file_handler.write("{}\n".format(item))
Pandas 唯一的解决方案是通过使用Series.isin
的boolean indexing
进行Series.isin
并通过~
反转掩码:
s = data[~data.isin(set(df_row))].drop_duplicates()
s.to_csv("part1left.txt", index=False)
编辑:
如果需要从文件创建Series
:
import pandas as pd
temp=u"""12354564
25345754
23545454
11565654
46456456"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename1.csv'
data = pd.read_csv(pd.compat.StringIO(temp), squeeze=True, header=None, dtype=str)
print (data)
0 12354564
1 25345754
2 23545454
3 11565654
4 46456456
Name: 0, dtype: int64
temp=u"""23545454
11565654
46456456"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename2.csv'
df_row = pd.read_csv(pd.compat.StringIO(temp), squeeze=True, header=None, dtype=str)
print (df_row)
0 23545454
1 11565654
2 46456456
Name: 0, dtype: int64
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.