我的df如下所示:
Index Country Val1 Val2 ... Val10
1 Australia 1 3 ... 5
2 Bambua 12 33 ... 56
3 Tambua 14 34 ... 58
Run Code Online (Sandbox Code Playgroud)
我想从每个国家的Val1中减去Val10,所以输出如下:
Country Val10-Val1
Australia 4
Bambua 23
Tambua 24
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经:
def myDelta(row):
data = row[['Val10', 'Val1']]
return pd.Series({'Delta': np.subtract(data)})
def runDeltas():
myDF = getDF() \
.apply(myDelta, axis=1) \
.sort_values(by=['Delta'], ascending=False)
return myDF
Run Code Online (Sandbox Code Playgroud)
runDeltas导致此错误:
ValueError: ('invalid number of arguments', u'occurred at index 9')
Run Code Online (Sandbox Code Playgroud)
解决此问题的正确方法是什么?
小智 10
使用它作为 df:
df = pd.DataFrame([["Australia", 1, 3, 5],
["Bambua", 12, 33, 56],
["Tambua", 14, 34, 58]
], columns=["Country", "Val1", "Val2", "Val10"]
)
Run Code Online (Sandbox Code Playgroud)
您也可以进行减法并将其放入新列中,如下所示。
>>>df['Val_Diff'] = df['Val10'] - df['Val1']
Country Val1 Val2 Val10 Val_Diff
0 Australia 1 3 5 4
1 Bambua 12 33 56 44
2 Tambua 14 34 58 44
Run Code Online (Sandbox Code Playgroud)
给定以下数据框:
df = pd.DataFrame([["Australia", 1, 3, 5],
["Bambua", 12, 33, 56],
["Tambua", 14, 34, 58]
], columns=["Country", "Val1", "Val2", "Val10"]
)
Run Code Online (Sandbox Code Playgroud)
它归结为一个简单的广播操作:
>>> val1_minus_val10 = df["Val1"] - df["Val10"]
>>> print(val1_minus_val10)
0 -4
1 -44
2 -44
dtype: int64
Run Code Online (Sandbox Code Playgroud)
您还可以使用pandas.DataFrame.assign函数:e,g
import numpy as np
import pandas as pd
df = pd.DataFrame([["Australia", 1, 3, 5],
["Bambua", 12, 33, 56],
["Tambua", 14, 34, 58]
], columns=["Country", "Val1", "Val2", "Val10"]
)
df = df.assign(Val10_minus_Val1 = df['Val10'] - df['Val1'])
Run Code Online (Sandbox Code Playgroud)
分配的最佳部分是您可以根据需要添加任意数量的作业。例如,获取差异,然后获取它的日志
df = df.assign(Val10_minus_Val1 = df['Val10'] - df['Val1'], log_result = lambda x: np.log(x.Val10_minus_Val1) )
Run Code Online (Sandbox Code Playgroud)
您可以通过使用 lambda 函数并分配给新列来执行此操作。
df['Val10-Val1'] = df.apply(lambda x: x['Val10'] - x['Val1'], axis=1)
print df
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37150 次 |
| 最近记录: |