ValueError: Must have equal len keys and value when setting with an iterable
生活随笔
收集整理的這篇文章主要介紹了
ValueError: Must have equal len keys and value when setting with an iterable
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個錯誤是數值大小錯誤
具體的意思是: 必須有相同長度的關鍵字跟值,當設置的對象是一個可迭代的對象的時候。
- 可迭代的對象,就是想tuple,list,字典一類的。
遇到這個錯誤,我故意在做測試的時候。
具體的代碼
這段代碼是有錯誤的,錯誤部分已經標記出來了
import pandas as pdif __name__ == '__main__':df = pd.DataFrame({'AAA': range(5), 'BBB': list('abcde'), 'CCC': ['a', 12, 1.2, ['alist'], (1, 2)]})print(df)df.loc[df.AAA >= 2, 'BBB'] = '-Changed'print(df)df.loc[df.AAA >= 3, 'CCC'] = [1, 3, 3] # 錯了print(df)知道問題在哪之后,這個該怎么解決呢?
我們先把這個語句,還有這個dataframe單獨拿出來看
df.loc[df.AAA >= 3, ‘CCC’] = [1, 3, 3]
- dataframe在此!
接下來,我將前面那些沒有問題代碼去掉。只用那個生成的來做探索
這里,分別對于這個函數的理解,或者說是用途,做出兩種不同解法。
第一種:將這個長度改為相等的。
將這個語句做下面的修改。
df.loc[df.AAA >= 3, ‘CCC’] = [1, 3]
源碼被我改成這樣,輸出的結果就會發生改變
import pandas as pdif __name__ == '__main__':df = pd.DataFrame({'AAA': range(5), 'BBB': list('abcde'), 'CCC': ['a', 12, 1.2, ['alist'], (1, 2)]})print(df)df.loc[df.AAA >= 3, 'CCC'] = [1, 3]print(df) AAA BBB CCC 0 0 a a 1 1 b 12 2 2 c 1.2 3 3 d [alist] 4 4 e (1, 2)AAA BBB CCC 0 0 a a 1 1 b 12 2 2 c 1.2 3 3 d 1 4 4 e 3注意到了沒有,在后面的部分,CCC被按照迭代的方式,順序的放到了對應的位置當中。
第二種方法: 如果我想要讓每個地方都變成對應的的list怎么弄呢?這時候的輸出的結果是:
AAA BBB CCC 0 0 a a 1 1 b 12 2 2 c 1.2 3 3 d [alist] 4 4 e (1, 2)AAA BBB CCC 0 0 a a 1 1 b 12 2 2 c 1.2 3 3 d (1, 2) 4 4 e (1, 3)最后,老套路,宣傳一波自己的公眾號!(求關注哇!)
本人中大一肥宅,歡迎大家關注,請掃下面的二維碼(〃’▽’〃)
如果覺得有幫助的話,可以掃碼,贊賞鼓勵一下!謝謝!
總結
以上是生活随笔為你收集整理的ValueError: Must have equal len keys and value when setting with an iterable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DFS求连通块数目(深搜)
- 下一篇: 不允许一个迭代的对象自己接着迭代下去(P