![](/img/trans.png)
[英]Python Pandas: Create new rows in dataFrame based on two columns
[英]Calculating new rows in a Pandas Dataframe on two different columns
所以我是 Python 的初學者,我有一個包含 Country、avgTemp 和 year 的數據框。 我想要做的是計算每個國家的新行,其中年份增加 20,avgTemp 乘以名為 tempChange 的變量。 我不想刪除以前的值,我只想附加新值。
最好我還想創建一個循環來運行代碼一定次數超級感謝任何幫助!
如果您需要從數據框中復制值作為示例,您可以在此處獲取它:
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 列
如果你想重復行,我會創建一個新的數據幀,在新的數據幀中執行任何操作(總和 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)
這就是您應用於每一行的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.