如何添加多个具有固定值的新列?

时间:2019-02-18 20:47:14

标签: python pandas

我需要在DataFrame df中添加列。所有新列的值应沿df的所有行固定:

df = {
       "NUM":[1,2],
       "WAKE":["M","H"],
       "DISTANCE":[780,500]
     }

new_df = pd.DataFrame(df)

这就是我尝试添加具有固定值的新的多个列的方法。

for column, row in new_df.iterrows():
    row["TEMPERATURE"] = 20
    row["VISIBILITY"] = 5000
    row["WIND"] = 10

此代码不会失败,但是不会创建新列。

预期结果:

NUM   WAKE  DISTANCE  TEMPERATURE  VISIBILITY  WIND
1     M     780       20           5000        10
2     H     500       20           5000        10

4 个答案:

答案 0 :(得分:2)

这就像使用字典进行的单个assign调用一样简单:

dct = {'TEMPERATURE': 20, 'VISIBILITY': 5000, 'WIND': 10}
new_df2 = new_df.assign(**dct)
new_df2

   NUM WAKE  DISTANCE  TEMPERATURE  VISIBILITY  WIND
0    1    M       780           20        5000    10
1    2    H       500           20        5000    10

答案 1 :(得分:2)

足够简单!

new_df['TEMPERATURE'] = 20
new_df['VISIBILITY'] = 5000
new_df['WIND'] = 10

将产生:

  INDEX NUM WAKE  DISTANCE TEMPERATURE VISIBILITY WIND
    0    1    M     780       20         5000      10
    1    2    H     500       20         5000      10

通过这种方式,您可以为数据框定义新列,并将每行值设置为单个值

答案 2 :(得分:1)

两个步骤

adddf=pd.DataFrame({'TEMPERATURE': 20, 'VISIBILITY': 5000, 'WIND': 10},index=new_df.index)
pd.concat([new_df,adddf],1)
Out[253]: 
   DISTANCE  NUM WAKE  TEMPERATURE  VISIBILITY  WIND
0       780    1    M           20        5000    10
1       500    2    H           20        5000    10

答案 3 :(得分:1)

在尝试通过迭代更改值之前,我遇到了同样的问题。我意识到,如果您在进行更改时没有真正调用变量/数据框架,则您什么都没有更改。我不知道其背后的原因,但要使其正常工作,您必须使用.loc [column,column name]进行实际更改。

for column, row in new_df.iterrows():
        new_df.loc[column,"TEMPERATURE"] = 20
        new_df.loc[column,"VISIBILITY"] = 5000
        new_df.loc[column,"WIND"] = 10