为了账号安全,请及时绑定邮箱和手机立即绑定

在两个不同列上计算 Pandas Dataframe 中的新行

在两个不同列上计算 Pandas Dataframe 中的新行

哔哔one 2022-07-12 10:28:36
所以我是 Python 的初学者,我有一个包含 Country、avgTemp 和 year 的数据框。我想要做的是计算每个国家/地区的新行,其中年份增加 20 并且 avgTemp 乘以一个名为 tempChange 的变量。我不想删除以前的值,我只想附加新值。这是数据框的外观: 最好我还想创建一个循环运行代码一定次数超级感谢任何帮助!如果您需要从数据框中复制值作为示例,您可以在此处获取:Country        avgTemp        year0 Afghanistan    14.481583    20121 Africa         24.725917    20122 Albania        13.768250    20123 Algeria        23.954833    20124 American Samoa 27.201417    2012243行×3列
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果你想重复这些行,我会创建一个新的数据帧,在新的数据帧中执行任何操作(总和 20 年,将温度乘以常数或数组等......)然后使用concat()它来追加它到原始数据框:


import pandas as pd

tempChange=1.15

data = {'Country':['Afghanistan','Africa','Albania','Algeria','American Samoa'],'avgTemp':[14,24,13,23,27],'Year':[2012,2012,2012,2012,2012]}

df = pd.DataFrame(data)

df_2 = df.copy()

df_2['avgTemp'] = df['avgTemp']*tempChange

df_2['Year'] = df['Year']+20

df = pd.concat([df,df_2]) #ignore_index=True if you wish to not repeat the index value

print(df)

输出:


          Country  avgTemp  Year

0     Afghanistan    14.00  2012

1          Africa    24.00  2012

2         Albania    13.00  2012

3         Algeria    23.00  2012

4  American Samoa    27.00  2012

0     Afghanistan    16.10  2032

1          Africa    27.60  2032

2         Albania    14.95  2032

3         Algeria    26.45  2032

4  American Samoa    31.05  2032


查看完整回答
反对 回复 2022-07-12
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我相信你正在寻找的是

dfName['newYear'] =  dfName.apply(lambda x: x['year'] + 20,axis=1)
dfName['tempDiff'] =  dfName.apply(lambda x: x['avgTemp']*tempChange,axis=1)

这就是您应用到每一行的方式。


查看完整回答
反对 回复 2022-07-12
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

其中 df 是您的数据框名称:

 df['tempChange'] = df['year']+ 20  * df['avgTemp']

这将使用上述逻辑向您的 df 添加一个新列。我不确定我是否理解你的逻辑正确,所以数学可能需要一些工作


查看完整回答
反对 回复 2022-07-12
  • 3 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号