计算数据帧中两个不同列上的新行

2024-04-26 12:04:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是dataframe的外观: enter image description here

最好我还想创建一个循环,使代码运行一定次数 非常感谢您的帮助

如果您需要从数据帧复制值作为示例,可以在此处使用:

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列


Tags: 数据框架示例dataframe国家次数yearcountry
3条回答

如果要重复这些行,我将创建一个新的数据帧,在新的数据帧中执行任何操作(求和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

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

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

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

我相信你要找的是

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

这是应用于每一行的方式

相关问题 更多 >