我想将函数GetPermittedFAR映射到我的dataframe(df),这样我就可以测试在cols zonedist1 ==中的一个值,一个特定的值,我可以构建新的cols,比如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)发布于 2016-03-08 03:56:00
使用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 R2Xmerge是另一个具有条件的数据格式
In [613]: merge
Out[613]:
zonedist1 FAR_Permitted Building Height Max
0 R7-3 0.5 35
1 R3-2 0.5 35然后,将df与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值。
https://stackoverflow.com/questions/35858265
复制相似问题