我有一个现有的数据框,我需要添加一个额外的列,每列包含相同的值.
现有的df:
Date, Open, High, Low, Close
01-01-2015, 565, 600, 400, 450
Run Code Online (Sandbox Code Playgroud)
新df:
Name, Date, Open, High, Low, Close
abc, 01-01-2015, 565, 600, 400, 450
Run Code Online (Sandbox Code Playgroud)
我知道如何附加现有的系列/数据框列.但这是一种不同的情况,因为我需要的是添加"名称"列并将每一行设置为相同的值,在本例中为"abc".
我不完全确定如何做到这一点.
EdC*_*ica 233
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
Run Code Online (Sandbox Code Playgroud)
piR*_*red 51
您可以使用它insert
来指定新列的位置.在这种情况下,我用0
左侧放置新列.
df.insert(0, 'Name', 'abc')
Name Date Open High Low Close
0 abc 01-01-2015 565 600 400 450
Run Code Online (Sandbox Code Playgroud)
Zer*_*ero 36
单衬里工作
df['Name'] = 'abc'
Run Code Online (Sandbox Code Playgroud)
创建一个Name
列并将所有行设置为abc
value
mat*_*son 33
我想引起更多关注@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)
Run Code Online (Sandbox Code Playgroud)
请注意.assign(LOCATION='Alta',
在其余操作中间创建具有单个值的列的行。
Mic*_*ini 26
总结其他人的建议,并增加第三种方式
您可以:
df.assign(Name='abc')
Run Code Online (Sandbox Code Playgroud)访问新的列系列(将被创建)并设置它:
df['Name'] = 'abc'
Run Code Online (Sandbox Code Playgroud)insert(loc,column,value,allow_duplicates = False)
df.insert(0, 'Name', 'abc')
Run Code Online (Sandbox Code Playgroud)
其中参数loc(0 <= loc <= len(columns))允许您将列插入所需的位置.
"禄"给你,你列的索引将在插入后.例如,上面的代码将列Name作为第0列插入,即它将插入第一列之前,成为新的第一列.(索引从0开始).
所有这些方法都允许您从系列中添加新列(只需用上面的'abc'默认参数替换系列).
小智 16
One Line 帮我完成了这项工作。
df['New Column'] = 'Constant Value'
df['New Column'] = 123
Run Code Online (Sandbox Code Playgroud)
小智 11
您可以简单地执行以下操作:
df['New Col'] = pd.Series(["abc" for x in range(len(df.index))])
Run Code Online (Sandbox Code Playgroud)