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

Joy*_*ove 4 object dataframe pandas

如何将空列添加到数据框?

这已经部分覆盖。

dtype of df["D"] = np.nan在接受的答案是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]]
Run Code Online (Sandbox Code Playgroud)

通缉

   A  B               D
0  1  2  []
1  2  3  [[a, b, c, d]]
2  3  4  []
Run Code Online (Sandbox Code Playgroud)

raf*_*elc 6

使用

df["D"] = [[] for _ in range(len(df))]
Run Code Online (Sandbox Code Playgroud)

代替

df["D"] = [[]] * len(df) 
Run Code Online (Sandbox Code Playgroud)

这样,您将为[]每一行创建不同的内容。


基本上[[] for _ in range(len(df))]是一个列表理解。[]为中的每个值创建一个range(len(df))

此代码具有与以下功能相同的功能

l = []
for _ in range(len(df)):
    l.append([])
Run Code Online (Sandbox Code Playgroud)

但是明显更快容易编写,甚至更具可读性。

如果您想进一步了解清单理解,我建议为这个问题给出答案

如果您想进一步了解执行此操作为什么会发生这种情况[[]] * len(df),建议您回答此问题

  • 下划线只是变量的名称。可能是`i`,`j`或其他任何名称。如果不打算使用变量_,则只是一个惯例 (2认同)