在 DataFrame 的开头(最左端)插入一列

Posted

技术标签:

【中文标题】在 DataFrame 的开头(最左端)插入一列【英文标题】:Insert a column at the beginning (leftmost end) of a DataFrame 【发布时间】:2018-02-28 15:59:41 【问题描述】:

我有 30 列的数据框,想添加一个新列开始。

【问题讨论】:

【参考方案1】:

DataFrame.insert

df = pd.DataFrame('A': ['x'] * 3, 'B': ['x'] * 3)
df

   A  B
0  x  x
1  x  x
2  x  x

seq = ['a', 'b', 'c']

# This works in-place.
df.insert(0, 'C', seq)
df

   C  A  B
0  a  x  x
1  b  x  x
2  c  x  x

pd.concat

df = pd.concat([pd.Series(seq, index=df.index, name='C'), df], axis=1)
df

   C  A  B
0  a  x  x
1  b  x  x
2  c  x  x

DataFrame.reindex + assign 先reindex,然后assign会记住原列的位置。

df.reindex(['C', *df.columns], axis=1).assign(C=seq)

   C  A  B
0  a  x  x
1  b  x  x
2  c  x  x

【讨论】:

我们如何将它插入到最后(最后一列)?为什么df.insert(-1, 'C', seq) 不起作用? 要在最后插入列,只需执行df['C'] = seq

以上是关于在 DataFrame 的开头(最左端)插入一列的主要内容,如果未能解决你的问题,请参考以下文章

使用第一列作为键,第二列作为值的 DataFrame 到 Json

将一列空列表添加到 DataFrame

如何在不生成 SettingWithCopyWarning 的情况下将列插入 DataFrame

批量从Dataframe插入到DB,忽略Pyspark中的失败行

Pandas学习笔记,如何删除DataFrame中的一列(行)

使用同一 Dataframe 中另一列的 int 作为索引获取列中的列表值