Python pandas insert list into a cell

I have a list 'abc' and a dataframe 'df':

    abc = ['foo', 'bar']
    df =
        A  B
    0  12  NaN
    1  23  NaN

I want to insert the list into cell 1B, so I want this result:

        A  B
    0  12  NaN
    1  23  ['foo', 'bar']

Ho can I do that?

1) If I use this:

    df.ix[1,'B'] = abc

I get the following error message:

    ValueError: Must have equal len keys and value when setting with an iterable

because it tries to insert the list (that has two elements) into a row / column but not into a cell.

2) If I use this:

    df.ix[1,'B'] = [abc]

then it inserts a list that has only one element that is the 'abc' list ( [['foo', 'bar']] ).

3) If I use this:

    df.ix[1,'B'] = ', '.join(abc)

then it inserts a string: ( foo, bar ) but not a list.

4) If I use this:

    df.ix[1,'B'] = [', '.join(abc)]

then it inserts a list but it has only one element ( ['foo, bar'] ) but not two as I want ( ['foo', 'bar'] ).

Thanks for help!

EDIT

My new dataframe and the old list:

    abc = ['foo', 'bar']
    df2 =
        A    B         C
    0  12  NaN      'bla'
    1  23  NaN  'bla bla'

Another dataframe:

    df3 =
        A    B         C                    D
    0  12  NaN      'bla'  ['item1', 'item2']
    1  23  NaN  'bla bla'        [11, 12, 13]

I want insert the 'abc' list into df2.loc[1,'B'] and/or df3.loc[1,'B'].

If the dataframe has columns only with integer values and/or NaN values and/or list values then inserting a list into a cell works perfectly. If the dataframe has columns only with string values and/or NaN values and/or list values then inserting a list into a cell works perfectly. But if the dataframe has columns with integer and string values and other columns then the error message appears if I use this: df2.loc[1,'B'] = abc or df3.loc[1,'B'] = abc.

Another dataframe:

    df4 =
              A     B
    0      'bla'  NaN
    1  'bla bla'  NaN

These inserts work perfectly: df.loc[1,'B'] = abc or df4.loc[1,'B'] = abc.

df3.set_value(1, 'B', abc) works for any dataframe. Take care of the data type of column 'B'. Eg. a list can not be inserted into a float column, at that case df['B'] = df['B'].astype(object) can help.

From: stackoverflow.com/q/26483254

Back to homepage or read more recommendations: