ฉันมีรายการ 'abc' และ dataframe 'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
ฉันต้องการแทรกรายการลงในเซลล์ 1B ดังนั้นฉันต้องการผลลัพธ์นี้:
A B
0 12 NaN
1 23 ['foo', 'bar']
โฮฉันจะทำอย่างนั้นได้ไหม?
1) ถ้าฉันใช้สิ่งนี้:
df.ix[1,'B'] = abc
ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ValueError: Must have equal len keys and value when setting with an iterable
เนื่องจากพยายามแทรกรายการ (ที่มีสององค์ประกอบ) ลงในแถว / คอลัมน์ แต่ไม่เข้าไปในเซลล์
2) ถ้าฉันใช้สิ่งนี้:
df.ix[1,'B'] = [abc]
จากนั้นจะแทรกรายการที่มีองค์ประกอบเดียวคือรายการ 'abc' ( [['foo', 'bar']]
)
3) ถ้าฉันใช้สิ่งนี้:
df.ix[1,'B'] = ', '.join(abc)
จากนั้นจะแทรกสตริง: ( foo, bar
) แต่ไม่ใช่รายการ
4) ถ้าฉันใช้สิ่งนี้:
df.ix[1,'B'] = [', '.join(abc)]
จากนั้นจะแทรกรายการ แต่มีเพียงองค์ประกอบเดียว ( ['foo, bar']
) แต่ไม่ใช่สองรายการตามที่ฉันต้องการ ( ['foo', 'bar']
)
ขอบคุณที่ช่วยเหลือ!
แก้ไข
ดาต้าเฟรมใหม่ของฉันและรายการเก่า:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
ดาต้าเฟรมอื่น:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
ฉันต้องการใส่ 'abc' รายการลงในและdf2.loc[1,'B']
/ หรือdf3.loc[1,'B']
หากดาต้าเฟรมมีคอลัมน์ที่มีเฉพาะค่าจำนวนเต็มและ / หรือค่า NaN และ / หรือค่ารายการการแทรกรายการลงในเซลล์จะทำงานได้อย่างสมบูรณ์ หากดาต้าเฟรมมีคอลัมน์ที่มีเฉพาะค่าสตริงและ / หรือค่า NaN และ / หรือค่ารายการการแทรกรายการลงในเซลล์จะทำงานได้อย่างสมบูรณ์ แต่ถ้าดาต้าเฟรมมีคอลัมน์ที่มีค่าจำนวนเต็มและสตริงและคอลัมน์อื่น ๆ ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้นหากฉันใช้สิ่งนี้: df2.loc[1,'B'] = abc
หรือdf3.loc[1,'B'] = abc
.
ดาต้าเฟรมอื่น:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
เม็ดมีดเหล่านี้ทำงานได้อย่างสมบูรณ์: df.loc[1,'B'] = abc
หรือdf4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']