ValueError: การตั้งค่าองค์ประกอบอาร์เรย์ด้วยลำดับ สำหรับแพนด้า

ฉันมี Pandas dataframe เรียกว่า output ปัญหาพื้นฐานคือ ฉันต้องการตั้งค่าแถว คอลัมน์ใน dataframe เป็นรายการโดยใช้ฟังก์ชัน ix และได้รับ ValueError: setting an array element with a sequence. ความเข้าใจของฉันคือองค์ประกอบ dataframe ก็เหมือนกับองค์ประกอบรายการ มันสามารถเก็บอะไรก็ได้ (สตริง รายการ , สิ่งอันดับ ฯลฯ) ฉันไม่ถูกต้องเหรอ?

การตั้งค่าพื้นฐาน:

import pandas as pd
output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'])
print output.ix['Project1', 'Sold Count']
>>>800

ทำงานได้ดี

output.ix['Project1', 'Sold Count'] = 400.0
print output.ix['Project1', 'Sold Count']
>>>400.0    

ไม่ทำงาน

output.ix['Project1', 'Sold Count'] = [400.0]
print output.ix['Project1', 'Sold Count']
>>>ValueError: setting an array element with a sequence.

person user2242044    schedule 19.10.2015    source แหล่งที่มา
comment
ทำไมคุณถึงต้องการตั้งค่ารายการ?   -  person Anand S Kumar    schedule 19.10.2015
comment
@AnandSkumar. นี่คือตัวอย่างง่ายๆ ในบางครั้งอาจมีหลายค่า ดังนั้นรายการจึงสมเหตุสมผล เช่น[400.0, 200.0]   -  person user2242044    schedule 19.10.2015


คำตอบ (1)


หากคุณต้องการตั้งค่ารายการเป็นค่าสำหรับองค์ประกอบจริงๆ ปัญหาอยู่ที่ dtype ของคอลัมน์ เมื่อคุณสร้าง DataFrame dtype จะถูกอนุมานเป็น float64 เนื่องจากมีเพียงค่าตัวเลขเท่านั้น

จากนั้นเมื่อคุณพยายามตั้งค่ารายการเป็นค่า รายการจะเกิดข้อผิดพลาด เนื่องจาก dtype วิธีแก้ไขปัญหานี้คือการใช้ dtype ที่ไม่ใช่ตัวเลข (เช่น object) หรือมากกว่านั้น ตัวอย่าง -

output['Sold Count'] = output['Sold Count'].astype(object)
output.loc['Project1','Sold Count'] = [1000.0,800.0] #Your list

การสาธิต -

In [91]: output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'])

In [92]: output
Out[92]:
          Sold Count
Project1         800

In [93]: output['Sold Count'] = output['Sold Count'].astype(object)

In [94]: output.loc['Project1','Sold Count'] = [1000.0,800.0]

In [95]: output
Out[95]:
               Sold Count
Project1  [1000.0, 800.0]

คุณยังสามารถระบุ dtype ในขณะที่สร้าง DataFrame ตัวอย่าง -

output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'],dtype=object)
output.loc['Project1','Sold Count'] = [1000.0,800.0]

การสาธิต -

In [96]: output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'],dtype=object)

In [97]: output.loc['Project1','Sold Count'] = [1000.0,800.0]

In [98]: output
Out[98]:
               Sold Count
Project1  [1000.0, 800.0]
person Anand S Kumar    schedule 19.10.2015
comment
output['Sold Count'].astype(object).apply(list) ยังคงใช้งานไม่ได้ - person vinayak_narune; 09.02.2020