Python 属性错误:';str';对象没有属性';合并';
我正在尝试合并2个Python 属性错误:';str';对象没有属性';合并';,python,python-3.x,linux,pandas,attributeerror,Python,Python 3.x,Linux,Pandas,Attributeerror,我正在尝试合并2个csv文件。我使用的文件名是sys.argv[n] 但是它使用文件名作为字符串吗?我做错了什么?(使用python3) 代码: import sys, pandas file1 = sys.argv[2] file2 = sys.argv[3] pd.read_csv(file1) pd.read_csv(file2) merge = file1.merge(file2, on='username') merge.to_csv("output.csv", index=False
csv
文件。我使用的文件名是sys.argv[n]
但是它使用文件名作为字符串吗?我做错了什么?(使用python3)
代码:
import sys, pandas
file1 = sys.argv[2]
file2 = sys.argv[3]
pd.read_csv(file1)
pd.read_csv(file2)
merge = file1.merge(file2, on='username')
merge.to_csv("output.csv", index=False)
错误
Traceback (most recent call last):
File "setup.py", line 93, in <module>
merge_csv()
File "setup.py", line 65, in merge_csv
merge = file1.merge(file2, on='username')
AttributeError: 'str' object has no attribute 'merge'
回溯(最近一次呼叫最后一次):
文件“setup.py”,第93行,在
合并(csv)
文件“setup.py”,第65行,合并为csv
merge=file1.merge(file2,on='username')
AttributeError:“str”对象没有属性“merge”
您正在合并字符串文件名,而不是已创建的数据帧
您使用pd.read\u csv
创建的数据帧没有分配给任何对象
改变
file1 = sys.argv[2]
file2 = sys.argv[3]
pd.read_csv(file1)
pd.read_csv(file2)
到
您正在合并字符串文件名,而不是已创建的数据帧 您使用
pd.read\u csv
创建的数据帧没有分配给任何对象
改变
file1 = sys.argv[2]
file2 = sys.argv[3]
pd.read_csv(file1)
pd.read_csv(file2)
到
考虑为参数使用更好的命名,这将使调试过程更容易 让我们改变:
file1=sys.argv[2]
file2=sys.argv[3]
为此:
file1\u name=sys.argv[2]
file2_name=sys.argv[3]
现在很清楚,它们不是文件类型,只是文件的字符串名
现在让我们创建对象:
file1\u object=pd.read\u csv(file1\u名称)
file2\u object=pd.read\u csv(file2\u名称)
merged\u file=file1\u object.merge(file2\u object,on='username')
考虑为参数使用更好的命名,这将使调试过程更容易
让我们改变:
file1=sys.argv[2]
file2=sys.argv[3]
为此:
file1\u name=sys.argv[2]
file2_name=sys.argv[3]
现在很清楚,它们不是文件类型,只是文件的字符串名
现在让我们创建对象:
file1\u object=pd.read\u csv(file1\u名称)
file2\u object=pd.read\u csv(file2\u名称)
merged\u file=file1\u object.merge(file2\u object,on='username')
正如@anky_91所建议的,我认为这是因为您没有在任何地方保存熊猫数据帧。您的merge命令正在读取ARGV项
尝试:
正如@anky_91所建议的,我认为这是因为您没有在任何地方保存熊猫数据帧。您的merge命令正在读取ARGV项 尝试:
如果将其分配给变量
file1=pd.read\u csv(file1)
和file2=pd.read\u csv(file2)
,它会解决吗?目前,您只需读取文件,但不将其存储在变量中,因为您实际上是在传递字符串:D您需要做的是使用参数string查找csv文件,并在其上调用read\u csv()
。如果您将其分配给变量file1=pd.read\u csv(file1)
和file2=pd.read\u csv(file2)
,它解决了吗?目前,您只需读取文件,但不将其存储在变量中,因为您实际上是在传递string:D。您需要做的是使用参数string找到您的csv文件,然后简单地在其上调用read\u csv()
。充分利用自文档化变量。不过我要提到的一件事是,当merge
已经是方法名时,使用merge
作为变量名可能会导致意外的错误issues@G.Anderson是的,你是对的,我现在修复了它,谢谢你很好地使用了自文档变量。不过我要提到的一件事是,当merge
已经是方法名时,使用merge
作为变量名可能会导致意外的错误issues@G.Anderson是的,你说得对,我现在修好了,谢谢你
foo = pd.read_csv(file1)
bar = pd.read_csv(file2)
merge = foo.merge(bar, on='username')