我需要在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
答案 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