如何将python列表附加到包含数组的每个数据帧单元?

如何将python列表附加到包含数组的每个数据帧单元?,python,pandas,Python,Pandas,我的代码: df=pd.DataFrame(columns=["a","b"], index=np.arange(1,3)) for col in df.columns: df[col].values[:]=[[]*2] print(df) for col,n in enumerate(df.columns): for row in range(1,3): df[n][row].append([1,2,3]) print(df)

我的代码:

df=pd.DataFrame(columns=["a","b"], index=np.arange(1,3))
for col in df.columns:
  df[col].values[:]=[[]*2]
print(df)
for col,n in enumerate(df.columns):
  for row in range(1,3):
    df[n][row].append([1,2,3])
    print(df)
           a   b
1  []  []
2  []  []
0 a
             a   b
1  [[1, 2, 3]]  []
2  [[1, 2, 3]]  []
0 a
                        a   b
1  [[1, 2, 3], [1, 2, 3]]  []
2  [[1, 2, 3], [1, 2, 3]]  []
1 b
                        a            b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
1 b
                        a                       b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
   
    a       b
1   []     []
2   []     []
0 a
         a    b
1   [[1,2,3]] []
2       []    []
0 a
         a    b
1   [[1,2,3]] []
2   [[1,2,3]] []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  [[1,2,3]]
输出:

df=pd.DataFrame(columns=["a","b"], index=np.arange(1,3))
for col in df.columns:
  df[col].values[:]=[[]*2]
print(df)
for col,n in enumerate(df.columns):
  for row in range(1,3):
    df[n][row].append([1,2,3])
    print(df)
           a   b
1  []  []
2  []  []
0 a
             a   b
1  [[1, 2, 3]]  []
2  [[1, 2, 3]]  []
0 a
                        a   b
1  [[1, 2, 3], [1, 2, 3]]  []
2  [[1, 2, 3], [1, 2, 3]]  []
1 b
                        a            b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
1 b
                        a                       b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
   
    a       b
1   []     []
2   []     []
0 a
         a    b
1   [[1,2,3]] []
2       []    []
0 a
         a    b
1   [[1,2,3]] []
2   [[1,2,3]] []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  [[1,2,3]]
我希望将输出作为列表添加到所有单元格中。但是列表不是添加到单元格中,而是添加到列的每一行中。请帮忙。先谢谢你

建议输出:

df=pd.DataFrame(columns=["a","b"], index=np.arange(1,3))
for col in df.columns:
  df[col].values[:]=[[]*2]
print(df)
for col,n in enumerate(df.columns):
  for row in range(1,3):
    df[n][row].append([1,2,3])
    print(df)
           a   b
1  []  []
2  []  []
0 a
             a   b
1  [[1, 2, 3]]  []
2  [[1, 2, 3]]  []
0 a
                        a   b
1  [[1, 2, 3], [1, 2, 3]]  []
2  [[1, 2, 3], [1, 2, 3]]  []
1 b
                        a            b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3]]
1 b
                        a                       b
1  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
2  [[1, 2, 3], [1, 2, 3]]  [[1, 2, 3], [1, 2, 3]]
   
    a       b
1   []     []
2   []     []
0 a
         a    b
1   [[1,2,3]] []
2       []    []
0 a
         a    b
1   [[1,2,3]] []
2   [[1,2,3]] []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  []
1 b
         a         b
1   [[1,2,3]]  [[1,2,3]]
2   [[1,2,3]]  [[1,2,3]]

在Python中,执行
[[[]*2]
实际上并没有像您可能期望的那样产生
[[]],[]]
,而是
[[[]]
。当您执行
df[col].values[:]=[[[]*2]
时,实际上是将列
col
中的所有行设置为同一个列表。您可以这样检查:

df = pd.DataFrame(columns=["a","b"], index=np.arange(1,3))
df["a"].values[:] = [[] * 2]
df["a"][1].append([1,2,3])
print(df)
执行上述操作后,
df
将变为如下所示,因为您实际上同时修改了两行:

             a    b
1  [[1, 2, 3]]  NaN
2  [[1, 2, 3]]  NaN

您要做的是:

for col in df.columns:
    for row in df.index:
        df[col][row] = []
然后


(还请注意,我没有使用
enumerate(df.columns)
,因为我们不需要它,而是用
df.index

替换了
range(1,3)

你能显示预期的输出吗?我已经编辑了问题,包括建议的输出。请看一看。非常感谢。