python - 如何创建一个列作为其他两个列的函数?

标签 python pandas dataframe

我有一个包含两列的数据框。我想创建第三列,如果 Col1 为空,则 Col3 = Col2,否则 Col3 = Col1 * 2

我已经尝试过:

    def myf(col1,col2):
       if pd.isnull(col1):
          return col2
       else:
          return col1 * 2

    df['col3'] = df.apply(lambda x: myf(df['col1'], df['col2']), axis= 1)

但我收到错误“‘系列的真实值不明确”。

我该如何解决这个问题?我那小小的、习惯了 SQL 的大脑仍然难以理解 pandas 的工作原理;也许我很笨,也许 pandas 的文档很差,也许两者都是:)

我知道 apply 在 DataFrame 的行/列基础上工作,applymap 在 DataFrame 上按元素工作,而 map 在 Series 上按元素工作,并且我知道出现错误是因为 pd.isnull 返回 T/F 数组。

但是,我不确定在这种情况下如何使用 applymap 或 map,其中另外两列是我的输入。

最佳答案

您可以使用fillna :

df.col1.mul(2).fillna(df.col2)
<小时/>
df = pd.DataFrame({
    'col1': [1, 2, pd.np.nan, 3, pd.np.nan],
    'col2': [2, pd.np.nan, 3, 2, pd.np.nan]
})

df['col3'] = df.col1.mul(2).fillna(df.col2)
df
#  col1   col2  col3
#0  1.0    2.0  2.0
#1  2.0    NaN  4.0
#2  NaN    3.0  3.0
#3  3.0    2.0  6.0
#4  NaN    NaN  NaN

关于python - 如何创建一个列作为其他两个列的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670170/

相关文章:

python - 以 SICP 风格创建素数生成器

python - 测试在 Python 中点击一个矩形

python - 如何构建按天/小时间隔分组的条形图?

python - 根据两列的比较从第二个 DataFrame 添加列

python - 生成已知总数的随机整数数组

python - Tensorboard 不显示标量

python - 将组上的顺序计数器列添加到 pandas 数据帧

python - 如果列丢失,将权重更改为我的索引

python - 按特定列分组,列出其他列 Pandas

python - 无法加入字符串类型的 Pandas 数据框