Pandas 熊猫将对象的空列添加到数据帧

Pandas 熊猫将对象的空列添加到数据帧,pandas,object,dataframe,Pandas,Object,Dataframe,这已经部分涵盖 接受答案中df[“D”]=np.nan的dtype是dtype=numpy.float64 是否有方法将空列表初始化到每个单元格中 尝试了df[“D”]=[[]]*len(df)但所有值都指向同一个对象,并将一个值设置为一个值,将所有值都设置为一个值 df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]}) df A B 0 1 2 1 2 3 2 3 4 df["D"] = [[]] * len(df) df

这已经部分涵盖

接受答案中df[“D”]=np.nan的
dtype是
dtype=numpy.float64

是否有方法将空列表初始化到每个单元格中

尝试了
df[“D”]=[[]]*len(df)
但所有值都指向同一个对象,并将一个值设置为一个值,将所有值都设置为一个值

df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
df

   A  B
0  1  2
1  2  3
2  3  4


df["D"] = [[]] * len(df)
df
   A  B   D
0  1  2  []
1  2  3  []
2  3  4  []


df['D'][1].append(['a','b','c','d'])
df
   A  B               D
0  1  2  [[a, b, c, d]]
1  2  3  [[a, b, c, d]]
2  3  4  [[a, b, c, d]]
通缉

   A  B               D
0  1  2  []
1  2  3  [[a, b, c, d]]
2  3  4  []

在创建列时,是否可以不传入列表列表。然后将列表值分配给临时变量,然后使用loc将该列表分配给数据帧中的一个字段

import pandas as pd

df = pd.DataFrame()
df['col A'] = [1,12,312,352]
df['col B'] = [[],[],[],[]]

ser = [1,4,5,6]
df.loc[2,'col B'] = ser
df
输出:

这有用吗?这就是你要找的吗?

使用

df["D"] = [[] for _ in range(len(df))]
而不是

df["D"] = [[]] * len(df) 
这样,您将为每一行创建不同的
[]


基本上,范围内(len(df))的
[]]
是一个函数,它为范围内(len(df))的每个值创建一个
[]

此代码具有与相同的功能

l = []
for _ in range(len(df)):
    l.append([])
但速度明显更快,编写更简单,可读性更强

如果您想进一步了解列表的理解,我建议您


如果您想进一步了解在执行
[[]]*len(df)
时发生这种行为的原因,我建议您更新一行,发现一个输入错误。在我循环代码时,df的行数不同,因此在您的示例中df['col B']无法使用固定长度的数据初始化。然后在初始化列时,使用代码@RafaelC suggest将最有效。是吗?太棒了。干杯谢谢,你能解释一下你是怎么理解我的吗?@Joylove当然:)我已经编辑了下划线只是一个变量的名字。可能是
i
j
或任何其他名称。如果您不打算使用它,那么命名变量
\uuu
只是一种惯例。哪一行会引发此警告<代码>df[“D”]=[[]用于范围内(len(df))]
不会发出此警告。