python - 如何基于其他列创建 6 个新列
问题描述
我有这个df:
TMAX TMIN PP
CODE
000130 990 1026 1033
000132 799 1160 711
000134 1727 1680 1730
000135 576 626 791
000136 1348 1242 1203
... ... ...
000543 927 902 1341
000546 168 167 263
000547 383 359 315
000548 372 393 601
000549 811 896 919
[100 rows x 3 columns]
我想创建 6 个新列。前三列将是 TMAXYEAR、TMINYEAR 和 PPYEAR,如下所示:
df['TMAXYEAR']=df['TMAX']/365
df['TMINYEAR']=df['TMIN']/365
df['PPYEAR']=df['PP']/365
其他列将是 TMAXPERC TMINPERC 和 PPERC:
df['TMAXPERC']=df['TMAX']*100/10958
df['TMINPERC']=df['TMIN']*100/10958
df['PPERC']=df['PP']*100/10958
我想知道是否有另一种更有效的方法来做到这一点。我也在考虑:
dfyear=df[['TMAX','TMIN','PP']]/365
dfperc=df[['TMAX','TMIN','PP']]*100/10958
然后加入这两个 df(dfyear 和 dfperc),但我仍然相信还有其他更有效的方法。
你介意帮助我吗?提前致谢。
解决方案
您可以一次创建多个列,请尝试:
l_cols=df.columns
#or if you limit the columns l_cols=['TMAX', 'TMIN', 'PP']
df[l_cols + 'YEAR'] = df[l_cols]/365
df[l_cols + 'PERC'] = df[l_cols]*100/10958
print(df)
推荐阅读
- ajax - 使用 javascript 和 ajax 从谷歌翻译小部件转换为云 api
- javascript - JavaScript 和 Chrome 扩展:传递变量
- java - 在内存方面,大数组或多个数组哪个更好、更高效?
- r - 无法用我的正则表达式提取星号
- c++ - C++ 中的随机序列生成
- node.js - NodeJS http 重定向请求
- asp.net-core - 使用 Caprover 将应用程序部署到根域而不是子域
- xamarin.forms - Xamarin MVVM显示母版页从左侧滑动,当按下标签页选项卡项时
- symfony - 具有多对多关系的 Symfony 5 对象序列化超时
- javascript - React children 应该设置为什么 TypeScript 类型?