为什么我的.apply()函数也输出一系列“无”?

时间:2019-08-15 15:59:30

标签: python pandas

这可能不是一个大问题,在执行.apply()之前,我只是没有注意到None的输出

玩具示例:

mydf = pd.DataFrame({'col1':['test1',np.nan,'test3','test4'],
                   'col2':['test5','test6','test7','test8']})

mydf


    col1   col2
0  test1  test5
1    NaN  test6
2  test3  test7
3  test4  test8

用于将值一起添加到字符串中的函数:

def myfunc(row):


    thing = str(row['col1']) + str(row['col2'])

    print(thing)

应用:

mydf.apply(myfunc,axis=1)

我的输出:

test1test5
nantest6
test3test7
test4test8

0    None
1    None
2    None
3    None
dtype: object

有什么需要担心的吗?不久我将对某些真实数据应用类似的方法。 如果有帮助,我将在Jupyter Notebook中执行此操作。

2 个答案:

答案 0 :(得分:3)

您应该返回字符串而不是打印它。

答案 1 :(得分:0)

在申请df之前不打印用户返回信息。

>>> mydf
    col1   col2
0  test1  test5
1    NaN  test6
2  test3  test7
3  test4  test8


>>> def myfunc(row):
...   thing = str(row['col1']) + str(row['col2'])
...   return thing
...

>>> mydf.apply(myfunc,axis=1)
0    test1test5
1      nantest6
2    test3test7
3    test4test8
dtype: object

只是想以另一种方式来做..

>>> cols = ['col1', 'col2']
>>> mydf[cols].astype(str).sum(axis=1)
0    test1test5
1      nantest6
2    test3test7
3    test4test8
dtype: object