gpt4 book ai didi

python - 将函数应用于 pandas 列

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:47 25 4
gpt4 key购买 nike

我想映射函数GetPermittedFAR给我的dataframe(df)这样我就可以测试 col zonedist1 中的值 == 某个值是否可以构建新的列,例如 df['FAR_Permitted']等等

我尝试过各种方式map()等等,但还没有让它发挥作用。我觉得这应该是一件很简单的事情?

理想情况下,我会使用简单的列表理解/lambda,因为我有许多这样的测试条件值,导致要创建 col 数据。

import pandas as pd
import numpy as np

def GetPermittedFAR():
if df['zonedist1'] == 'R7-3':
df['FAR_Permitted'] = 0.5
df['Building Height Max'] = 35

if df['zonedist1'] == 'R3-2':
df['FAR_Permitted'] = 0.5
df['Building Height Max'] = 35

if df['zonedist1'] == 'R1-1':
df['FAR_Permitted'] = 0.7
df['Building Height Max'] = 100
#etc...if statement for each unique value in 'zonedist'

df = pd.DataFrame({'zonedist1':['R7-3', 'R3-2', 'R1-1',
'R1-2', 'R2', 'R2A', 'R2X',
'R1-1','R7-3','R3-2','R7-3',
'R3-2', 'R1-1', 'R1-2'
]}

df = df.apply(lambda x: GetPermittedFAR(), axis=1)

最佳答案

使用pd.merge()怎么样?

df成为你的数据框

In [612]: df
Out[612]:
zonedist1
0 R7-3
1 R3-2
2 R1-1
3 R1-2
4 R2
5 R2A
6 R2X

合并是另一个有条件的数据框

In [613]: merge
Out[613]:
zonedist1 FAR_Permitted Building Height Max
0 R7-3 0.5 35
1 R3-2 0.5 35

然后,将 df 与“left”上的 merge 合并

In [614]: df.merge(merge, how='left')
Out[614]:
zonedist1 FAR_Permitted Building Height Max
0 R7-3 0.5 35
1 R3-2 0.5 35
2 R1-1 NaN NaN
3 R1-2 NaN NaN
4 R2 NaN NaN
5 R2A NaN NaN
6 R2X NaN NaN

稍后您可以替换 NaN 值。

关于python - 将函数应用于 pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com