系列中pandas列上的函数

xesrikrc  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在寻找预成型的一组列的功能表设置如下:
| 色谱柱_A|色谱柱B|色谱柱_C| D列|
| - -----|- -----|- -----|- -----|
| 一百二十三|四百五十六|零|零|
| 二百五十八|零|四百五十六|零|
| 零|七八五|零|零|
| 零|零|七九四|零|
我本质上是在寻找一个操作(为了这个例子的目的,假设我试图从值中减去10),按照列的“重要性”顺序,并将其存储在Column_D中。例如:

  • 如果列A不为空,则列D =列A-10。
  • 如果列A为空,则列D =列B-10。
  • 如果列B为空,则列D =列C-10。

column_B和column_C不应同时填充,它是一个或另一个,但它们可以与column_A同时填充。这个数据集大得离谱,所以不可能遍历行。有人有什么建议吗?
到目前为止,我已经尝试了if/elif/else逻辑,但在我的情况下,这并没有将值应用到整个 Dataframe 。也许我做得不对,我会尝试人们有的任何解决方案,即使它是if/elif/else语句。
我计划在代码完成后尝试以下操作:

df.Column_D = df.Column_A.combinefirst(df.Column_B)

df['Column_E'] = df.Column_A.combinefirst(df.Column_C)

df.Column_D = df.Column_D.fillna(df.Column_E)
z9smfwbn

z9smfwbn1#

您可以使用bfill,它根据您指定的序列填充缺少的值。参见以下示例:

>>> df = pd.DataFrame({"Column_A": [123, 258, np.NaN, np.NaN],"Column_B": [456,np.NaN,785,np.NaN],"Column_C": [np.NaN,456,np.NaN,794]})
>>> df['column_D'] = df[['Column_A', 'Column_B', 'Column_C']].bfill(axis=1).iloc[:, 0] - 10
>>> df
   Column_A  Column_B  Column_C  column_D
0     123.0     456.0       NaN     113.0
1     258.0       NaN     456.0     248.0
2       NaN     785.0       NaN     775.0
3       NaN       NaN     794.0     784.0

相关问题