将列添加到具有常量值的 Dataframe

im9ewurl  于 2022-09-21  发布在  其他
关注(0)|答案(9)|浏览(196)

我有一个现有的DataFrame,我需要向其中添加一个额外的列,该列将包含每一行的相同值。

现有DF:

Date, Open, High, Low, Close
01-01-2015, 565, 600, 400, 450

新的DF:

Name, Date, Open, High, Low, Close
abc, 01-01-2015, 565, 600, 400, 450

我知道如何追加现有的序列/数据框列。但这是一种不同的情况,因为我只需要添加‘name’列,并将每一行设置为相同的值,在本例中为‘abc’。

0h4hbjxa

0h4hbjxa1#

df['Name']='abc'将添加新列并将所有行设置为该值:

In [79]:

df
Out[79]:
         Date, Open, High,  Low,  Close
0  01-01-2015,  565,  600,  400,    450
In [80]:

df['Name'] = 'abc'
df
Out[80]:
         Date, Open, High,  Low,  Close Name
0  01-01-2015,  565,  600,  400,    450  abc
cgyqldqp

cgyqldqp2#

您可以使用insert指定新列的位置。在本例中,我使用0将新列放置在左侧。

df.insert(0, 'Name', 'abc')

  Name        Date  Open  High  Low  Close
0  abc  01-01-2015   565   600  400    450
li9yvcax

li9yvcax3#

总结前人建议,再添第三条路

你可以:

df.assign(Name='abc')
  • 访问新的列系列(它将被创建)并设置它:
df['Name'] = 'abc'
df.insert(0, 'Name', 'abc')

其中,参数loc(0<=loc<=len(Columns))允许您在需要的位置插入列。

‘loc’为您提供插入后列将位于的索引。例如,上面的代码插入列名作为第0列,即它将被插入到*第一列之前,成为新的第一列。(索引从0开始)。

所有这些方法都允许您从系列中添加新列(只需将上面的‘abc’默认参数替换为系列)。

np8igboo

np8igboo4#

单层班轮工作

df['Name'] = 'abc'

创建Name列并将所有行设置为abc

ogsagwnx

ogsagwnx5#

我想让更多的人注意@Michele-Piccolini回答的一部分。

我坚信.assign是这里最好的解决方案。在现实世界中,这些行动不是孤立的,而是一连串的行动。如果您希望支持一系列操作,则可能应该使用.assign方法。

下面是一个使用滑雪胜地降雪量数据的例子(但同样的原理也适用于……金融数据)。

这段代码读起来像是步骤的食谱。赋值(使用=)和.insert都使这一点变得更加困难:

raw = pd.read_csv('https://github.com/mattharrison/datasets/raw/master/data/alta-noaa-1980-2019.csv',
                  parse_dates=['DATE'])
def clean_alta(df):
    return (df
            .loc[:, ['STATION', 'NAME', 'LATITUDE', 'LONGITUDE', 'ELEVATION', 'DATE', 
                     'PRCP', 'SNOW', 'SNWD', 'TMAX', 'TMIN', 'TOBS']]
            .groupby(pd.Grouper(key='DATE', freq='W'))
            .agg({'PRCP': 'sum', 'TMAX': 'max', 'TMIN': 'min', 'SNOW': 'sum', 'SNWD': 'mean'})
            .assign(LOCATION='Alta', 
                    T_RANGE=lambda w_df: w_df.TMAX-w_df.TMIN)
    )

clean_alta(raw)

请注意.assign(LOCATION='Alta',行,它在其余操作的中间创建了一个具有单个值的列。

1rhkuytd

1rhkuytd6#

One Line为我做了这件事。

df['New Column'] = 'Constant Value'
df['New Column'] = 123
mbzjlibv

mbzjlibv7#

您只需执行以下操作:

df['New Col'] = pd.Series(["abc" for x in range(len(df.index))])
khbbv19g

khbbv19g8#

好吧,所有人,我这里有类似的情况,但如果我使用以下代码:df['Name']='abc'代替‘abc’,这是我希望从CSV文件中的其他位置获取的新列的名称。

从图中可以看到,DF尚未清洗,但我想创建两个名为“ADI DMS Rivoli”的列,它将继续用于每一行,并将用于“2019年12月”。希望你明白,这是很难解释的,对不起。

wz1wpwve

wz1wpwve9#

这一条线路行得通。

Df[‘name’]=‘ABC’

相关问题