当前位置: 首页 > 面试题库 >

将具有恒定值的列添加到pandas数据框

冉子石
2023-03-14
问题内容

给定一个DataFrame:

np.random.seed(0)
df = pd.DataFrame(np.random.randn(3, 3), columns=list('ABC'), index=[1, 2, 3])
df

          A         B         C
1  1.764052  0.400157  0.978738
2  2.240893  1.867558 -0.977278
3  0.950088 -0.151357 -0.103219

添加包含常量值(例如0)的新列的最简单方法是什么?

          A         B         C  new
1  1.764052  0.400157  0.978738    0
2  2.240893  1.867558 -0.977278    0
3  0.950088 -0.151357 -0.103219    0

这是我的解决方案,但我不知道为什么这会将NaN放入“新”列?

df['new'] = pd.Series([0 for x in range(len(df.index))])

          A         B         C  new
1  1.764052  0.400157  0.978738  0.0
2  2.240893  1.867558 -0.977278  0.0
3  0.950088 -0.151357 -0.103219  NaN

问题答案:

之所以将其NaN放入一列中,是因为df.indexIndex您右侧对象的有所不同。@zach显示了分配新的零列的正确方法。通常,pandas尝试使索引尽可能地对齐。一个缺点是,当指数不对准你NaN,无论他们
是不是
一致。尝试使用reindexalign方法来获得一些直觉,以便对齐具有部分,完全和未对齐所有对齐索引的对象。例如,以下是DataFrame.align()部分对齐索引的工作方式:

In [7]: from pandas import DataFrame

In [8]: from numpy.random import randint

In [9]: df = DataFrame({'a': randint(3, size=10)})

In [10]:

In [10]: df
Out[10]:
   a
0  0
1  2
2  0
3  1
4  0
5  0
6  0
7  0
8  0
9  0

In [11]: s = df.a[:5]

In [12]: dfa, sa = df.align(s, axis=0)

In [13]: dfa
Out[13]:
   a
0  0
1  2
2  0
3  1
4  0
5  0
6  0
7  0
8  0
9  0

In [14]: sa
Out[14]:
0     0
1     2
2     0
3     1
4     0
5   NaN
6   NaN
7   NaN
8   NaN
9   NaN
Name: a, dtype: float64


 类似资料:
  • 问题内容: 我有一个现有的数据框,我需要添加一个额外的列,每行将包含相同的值。 现有的df: 新的df: 我知道如何追加现有的series / dataframe列。但这是另一种情况,因为我所需要的只是添加“名称”列,并将每一行设置为相同的值,在本例中为“ abc”。 问题答案: 将添加新列并将所有行设置为该值:

  • 我有一个现有的dataframe,我需要在其中添加一个额外的列,该列的每一行都包含相同的值。 现有df: 新df: 我知道如何附加现有的series/dataframe列。但这是另一种情况,因为我只需要添加“Name”列,并将每一行设置为相同的值,在本例中为“abc”。

  • 问题内容: 我有一个形状为(X,Y)的Pandas数据框对象,如下所示: 还有一个形状为(X,Z)的numpy稀疏矩阵(CSC),看起来像这样 如何将矩阵中的内容添加到新命名列中的数据框中,以使数据框最终像这样: 请注意,数据框现在具有形状(X,Y + 1),并且矩阵中的行是数据框中的元素。 问题答案: import numpy as np import pandas as pd import s

  • 问题内容: 我有3个数据框,可以从下面显示的代码中生成 我想做两件事 a) 将所有这三个数据帧追加到一个大数据帧中 当我尝试使用以下代码进行此操作时,输出结果与预期不符 因此,要解决此问题,我了解我们必须重命名导致以下目标b的列名 b) 以一种优雅的方式将这n个数据帧的列重命名为统一的 请注意,在实时情况下,我可能具有预先不知道的具有不同列名的数据框,但它们中的值始终属于列和,并且始终相同。但请注

  • 问题内容: 我正在尝试使用特定的索引名称向DataFrame添加新行。 我已经尝试了以下方法,但是它正在创建一个新列而不是一个新行。 仍然不了解如何插入具有特定索引的行。将不胜感激任何建议。 问题答案: 您可以使用。 演示: 使用这种方法的PS,您不能添加具有现有(重复)索引值(标签)的行-在这种情况下,具有此索引标签的行将被 更新 。 更新: 如果索引是DateTimeIndex并且新行的索引不

  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?