python – 基于动态更改列创建公式以在Pandas Dataframe列中设置
发布时间:2020-12-20 11:49:57 所属栏目:Python 来源:网络整理
导读:我希望在pandas数据框中创建一个列,它是一个变量/动态列名列表的函数. 典型的列创建将是: df['new']=(df['one']*x)+(df['two']*y)+(df['3']*z) 其中x,y,z是来自另一个df的变量. x 1.1y 1.2z 1.3a 1.4b 1.5c 1.6 我想创建一个列,它将是一个变量列列表的函数.
我希望在pandas数据框中创建一个列,它是一个变量/动态列名列表的函数.
典型的列创建将是: df['new']=(df['one']*x)+(df['two']*y)+(df['3']*z) 其中x,y,z是来自另一个df的变量. x 1.1 y 1.2 z 1.3 a 1.4 b 1.5 c 1.6 我想创建一个列,它将是一个变量列列表的函数. 例如,如果: cols=['one','two'] 然后公式将创建为: df['new']=(df['one']*x)+(df['two']*y) 但是如果cols变为: cols=['one','two','three','four'] 然后公式将变为: df['new']=(df['one']*x)+(df['two']*y)+(df['3']*z)+(df['four']*a) 我知道我必须在这里错过一些简单的东西. 解决方法
使用zip将返回截断的对,因此[(a,b)为a,b in zip([1,2],[3,4,5,6])]将返回return [(1,3),( 2,4)].
df = pd.DataFrame(np.random.randn(5,5),columns=list('ABCDE')) x = 1.1 y = 1.2 z = 1.3 a = 1.4 b = 1.5 c = 1.6 var = [x,z,a,b,c] cols = ['A','B','C'] >>> sum(df[col] * v for col,v in zip(cols,var)) 0 0.729284 1 2.671124 2 1.804285 3 0.791489 4 1.818327 dtype: float64 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |