我正在尝试分配一个带有嵌套列表的数据框单元格:
df.loc['y','A'] = [[2]]
但实际分配的值是[2]
。
它适用于预期[2], [[[2]]], [[[[2]]]]
,但不适用于[[2]]
请参阅以下代码:
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)
输出:
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
更奇怪的是,如果我们删除 col "C" ,上面的所有代码注释中都不会再有 bug,也不会有错误。