我已經讓這個腳本在過去的2到3個月內運行得很好,然後由於什麼原因我不知道它只是決定它會打破我。我沒有更新Python或任何我在這個腳本中使用的庫,但無論如何,現在我需要幫助解決它。ValueError:需要多個值才能解包,我怎樣才能讓我的代碼更健壯?
要開始數據幀是如下
Company, Registered date, Contact name, Contact email, Contact phone
我通過所有與「_」
下一步是分裂「CONTACT_NAME」轉換爲小寫和更換空間清理那些列列開始爲「(第一)(最後)」,即「John Doe」,我想爲第一個和最後一個添加2列。新DF如下,
company, registered_date, contact_name, first_name, last_name, contact_email, contact_phone
該程序正在拆分聯繫人名稱和/或創建新列。我一直在使用要做到這一點代碼行是:
df1['first_name'], df1['last_name'] = zip(*df1['registrant_name'].apply(lambda x: x.split(' ', 1)))
回溯說:
File "(name).py", line 123
df1['first_name'], df1['last_name'] = zip(*df1['registrant_name'].apply(lambda x: x.split(' ', 1)))
ValueError: need more than 1 value to unpack
當我通過一些東西,我發現有人用同樣的問題在使用line.split看了(不在Pandas裏面,只是一般的Python),有人說這可能是因爲這兩個值都不存在。果然,這似乎是3個月來的第一次,我只是在「contact_name」列中只有一個值,而不是「John Doe」,而只是「John」(幸運的是,這實際上是第一個入口在這個CSV中,否則我會被困住一段時間試圖查看每一行)。
所以我的問題是,如何讓我的代碼更健壯,如果再次出現這個問題,我們可以解決它。我在想,我想要做的是如果沒有空間,它會將當前值作爲「first_name」,然後添加「NaN」作爲姓。因爲循環並不理想,所以我只是不知道如何在DF中完成它。
感謝您的幫助!
在你的代碼可能已經避免了lambda函數和使用'DF1 [「registrant_name」]海峽。 split()'代替。 – IanS