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

所以我是 Python 的初学者,我有一个包含 Country、avgTemp 和 year 的数据框。我想要做的是计算每个国家/地区的新行,其中年份增加 20 并且 avgTemp 乘以一个名为 tempChange 的变量。我不想删除以前的值,我只想附加新值。

这是数据框的外观: 

http://img2.mukewang.com/62ccdc760001109003110432.jpg

最好我还想创建一个循环运行代码一定次数超级感谢任何帮助!


如果您需要从数据框中复制值作为示例,您可以在此处获取:


Country        avgTemp        year


0 Afghanistan    14.481583    2012


1 Africa         24.725917    2012


2 Albania        13.768250    2012


3 Algeria        23.954833    2012


4 American Samoa 27.201417    2012

243行×3列


哔哔one
浏览 228回答 3
3回答

慕尼黑8549860

如果你想重复这些行,我会创建一个新的数据帧,在新的数据帧中执行任何操作(总和 20 年,将温度乘以常数或数组等......)然后使用concat()它来追加它到原始数据框:import pandas as pdtempChange=1.15data = {'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']*tempChangedf_2['Year'] = df['Year']+20df = pd.concat([df,df_2]) #ignore_index=True if you wish to not repeat the index valueprint(df)输出:          Country  avgTemp  Year0     Afghanistan    14.00  20121          Africa    24.00  20122         Albania    13.00  20123         Algeria    23.00  20124  American Samoa    27.00  20120     Afghanistan    16.10  20321          Africa    27.60  20322         Albania    14.95  20323         Algeria    26.45  20324  American Samoa    31.05  2032

明月笑刀无情

我相信你正在寻找的是dfName['newYear'] =  dfName.apply(lambda x: x['year'] + 20,axis=1) dfName['tempDiff'] =  dfName.apply(lambda x: x['avgTemp']*tempChange,axis=1)这就是您应用到每一行的方式。

蛊毒传说

其中 df 是您的数据框名称: df['tempChange'] = df['year']+ 20  * df['avgTemp']这将使用上述逻辑向您的 df 添加一个新列。我不确定我是否理解你的逻辑正确,所以数学可能需要一些工作
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python