pandas 数据帧中行级别的算术运算
Arithmetic operations on row level in pandas dataframe
我有如下数据框:
df:
Heir_1 Heir_2 Amount_1 Amount_2
0 New Argentina 251823845.90 225432949.80
1 New Venice 219982836.00 183705325.60
2 New Denmark 419848669.41 546624742.50
3 New Russia 218120340.46 151480060.80
4 New Global 4706066755.41 4432657926.66
这里的概念是全局总是 Argentina
、Venice
和 Others
的总和。但是 Others
行永远不会被提及。我想保持相同的数据帧结构,因为它必须经过进一步的代码。
那么我如何使用以下公式在 table 中创建单独的一行 Others:Others = Global - Argentina - Venice
预期数据帧:
df:
Heir_1 Heir_2 Amount_1 Amount_2
0 New Argentina 251823845.90 225432949.80
1 New Venice 219982836.00 183705325.60
2 New Denmark 419848669.41 546624742.50
3 New Russia 218120340.46 151480060.80
4 New Global 4706066755.41 4432657926.66
5 New Others 4234260073.51 4023519651.25
相关问题:
还有一个问题,没有必要在所有场景中都出现所有这 3 行。可能有一天 Argentina
不存在,或者 Venice
不存在,或者 Global
不存在。
本例中有 3^3 种可能的情景。我可以在这种情况下使用 if 语句,但不确定考虑到所有编码
这是否是一个好方法
试试这个
if df[df['Heir_2']=='Global'].shape[0]:
df_special = df[df['animal'].isin(['Argentina','Venecia'])].sum()
amount_1 = df[df['Heir_2']=='Global']['Amount_1'] - df_special['Amount_1']
amount_2 = df[df['Heir_2']=='Global']['Amount_2'] - df_special['Amount_2']
df.append({'Heir_1':'New','Heir_2':'Others','Amount_1':amount_1,'Amount_2':amount_2},ignore_index=True)
我有如下数据框:
df:
Heir_1 Heir_2 Amount_1 Amount_2
0 New Argentina 251823845.90 225432949.80
1 New Venice 219982836.00 183705325.60
2 New Denmark 419848669.41 546624742.50
3 New Russia 218120340.46 151480060.80
4 New Global 4706066755.41 4432657926.66
这里的概念是全局总是 Argentina
、Venice
和 Others
的总和。但是 Others
行永远不会被提及。我想保持相同的数据帧结构,因为它必须经过进一步的代码。
那么我如何使用以下公式在 table 中创建单独的一行 Others:Others = Global - Argentina - Venice
预期数据帧:
df:
Heir_1 Heir_2 Amount_1 Amount_2
0 New Argentina 251823845.90 225432949.80
1 New Venice 219982836.00 183705325.60
2 New Denmark 419848669.41 546624742.50
3 New Russia 218120340.46 151480060.80
4 New Global 4706066755.41 4432657926.66
5 New Others 4234260073.51 4023519651.25
相关问题:
还有一个问题,没有必要在所有场景中都出现所有这 3 行。可能有一天 Argentina
不存在,或者 Venice
不存在,或者 Global
不存在。
本例中有 3^3 种可能的情景。我可以在这种情况下使用 if 语句,但不确定考虑到所有编码
这是否是一个好方法试试这个
if df[df['Heir_2']=='Global'].shape[0]:
df_special = df[df['animal'].isin(['Argentina','Venecia'])].sum()
amount_1 = df[df['Heir_2']=='Global']['Amount_1'] - df_special['Amount_1']
amount_2 = df[df['Heir_2']=='Global']['Amount_2'] - df_special['Amount_2']
df.append({'Heir_1':'New','Heir_2':'Others','Amount_1':amount_1,'Amount_2':amount_2},ignore_index=True)