I'm trying to assign a dataframe cell with a nested list:
df.loc['y','A'] = [[2]]
However, the actual assigned value is [2].
It works expected for [2], [[[2]]], [[[[2]]]], but just not for [[2]]
See the following code:
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [[1], [[2]], [[[3]]], [[[[4]]]], np.array([[2]]), np.array([[[2]]]), [[1],[2]]],
"B": [[1], [[2]], [[[3]]], [[[[4]]]], np.array([[2]]), np.array([[[2]]]), [[1],[2]]],
"C": [1,2,3,4,5,6,7]
},
index=["x", "y", "z", "w","a","b","c"])
# initial assing works
print(df)
df.loc['x','A'] = [1] # good
df.loc['y','A'] = [[2]] # buggy, actual assigned value [2]
df.loc['z','A'] = [[[3]]] # good
df.loc['w','A'] = [[[[4]]]] #good
df.loc['a','A'] = np.array([[2]], dtype=object) # buggy, actual assign value [2]
df.loc['b','A'] = np.array([[[2]]], dtype=object) # good
#df.loc['b','A'] = [1,2] # error: Must have equal len keys and value when setting with an iterable
df.loc['c','A'] = [[1],[2]] # buggy, actual assigned value [1,2]
print(df)
The output:
A B C
x [1] [1] 1
y [[2]] [[2]] 2
z [[[3]]] [[[3]]] 3
w [[[[4]]]] [[[[4]]]] 4
a [[2]] [[2]] 5
b [[[2]]] [[[2]]] 6
c [[1], [2]] [[1], [2]] 7
A B C
x [1] [1] 1
y [2] [[2]] 2
z [[[3]]] [[[3]]] 3
w [[[[4]]]] [[[[4]]]] 4
a [2] [[2]] 5
b [[[2]]] [[[2]]] 6
c [1, 2] [[1], [2]] 7
What is even more strange is, if we remove the col "C" , there will be no buggy, no error in all the code comments above.