Pandas 如果给定的数据帧大小未知,则按值向数据帧值添加新列
我有一个数据框,它有一个列E,其中最多包含值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的形式出现,但在我的应用程序中,我处理的是一个包含其他列的数据框,我在这里没有显示。为了简化起见,我在这里像这样显示它们 我想做的是,在与这些
[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']))))