Pandas 如果给定的数据帧大小未知,则按值向数据帧值添加新列

Pandas 如果给定的数据帧大小未知,则按值向数据帧值添加新列,pandas,dataframe,indexing,Pandas,Dataframe,Indexing,我有一个数据框,它有一个列E,其中最多包含值 [200 300 400 600 1000] 但是,当我从一个源读取多组类似的数据时,并非所有的数据帧都有这5个值,即一个数据帧中会缺少一些行(例如has[200 300 400 1000],而另一个数据帧可能有不同的条目集(例如[200 300 600])。我很欣赏它们在这里以np.array或Series的形式出现,但在我的应用程序中,我处理的是一个包含其他列的数据框,我在这里没有显示。为了简化起见,我在这里像这样显示它们 我想做的是,在与这些

我有一个数据框,它有一个列E,其中最多包含值

[200 300 400 600 1000]
但是,当我从一个源读取多组类似的数据时,并非所有的数据帧都有这5个值,即一个数据帧中会缺少一些行(例如has
[200 300 400 1000]
,而另一个数据帧可能有不同的条目集(例如
[200 300 600]
)。我很欣赏它们在这里以np.array或Series的形式出现,但在我的应用程序中,我处理的是一个包含其他列的数据框,我在这里没有显示。为了简化起见,我在这里像这样显示它们

我想做的是,在与这些值相对应的第二列中添加固定值(如果这些值出现),即,如果dataframe包含200,则添加一个新列100。然后,如果列中有300,则添加100。我需要将这些固定值添加到上面的值中,因此如果我的dataframe看起来像

E
200
300
400
600
1000
那么它应该成为

E       D
200     100
300     100
400     200
600     400
1000    400
但如果是,例如

E
200
300
600
它应该成为

E       D
200     100
300     100
600     400
实际上,E中的值映射到D中的固定值,即

[100 100 200 400 400]
(它们实际上是E中的值和E中的下一个值之间的差值,假设所有值都在E中,并且没有缺失值)

非常感谢您的帮助和指导!

IICU:

# Conditions
a=df['E']<=300
c=df['E'].between(500,1100)
b=df['E']==400
df['C']=0#Create Column C and populate zeroes

看到我的答案,如果需要的话,很乐意进一步帮助谢谢你给我一个机会回答这个问题谢谢你这么多,它工作得非常完美。令人惊讶的是np.where是多么有用!
 df['C']=np.where(a, 200,(np.where(b, df['E']-200, np.where(c,400,df['C']))))