如何解决FunctionError和MapError

时间:2019-06-15 18:40:52

标签: python prettytable

Python 3.6 pycharm

import prettytable as pt
import numpy as np
import pandas as pd

a=np.random.randn(30,2)
b=a.round(2)
df=pd.DataFrame(b)
df.columns=['data1','data2']
tb = pt.PrettyTable()

def func1(columns):
    def func2(column):
        return tb.add_column(column,df[column])
    return map(func2,columns)

column1=['data1','data2']
print(column1)
print(func1(column1))

我想得到的结果是:

tb.add_column('data1',df['data1'])
tb.add_column('data2',df['data2'])

事实上,结果是:

<map object at 0x000001E527357828>

我试图在Stack Overflow中找到答案很长时间,有些答案告诉我可以使用list(func1(column1)),但是结果是[None, None]

1 个答案:

答案 0 :(得分:0)

基于https://ptable.readthedocs.io/en/latest/tutorial.html上的教程,PrettyTable.add_column修改了PrettyTable。此类函数通常返回None,而不返回修改后的对象。

通过尝试使用map和精美的包装函数,还会使问题变得更加复杂。下面的代码要简单得多,但是会产生预期的结果。

import prettytable as pt
import numpy as np
import pandas as pd

column_names = ['data1', 'data2']

a = np.random.randn(30, 2)
b = a.round(2)
df = pd.DataFrame(b)
df.columns = column_names
tb = pt.PrettyTable()

for col in column_names:
    tb.add_column(col, df[col])

print(tb)

如果您仍然对了解map返回的事物感兴趣,建议您阅读iterablesiteratorsmap在调用该函数的结果上返回一个迭代器,并且直到您对其进行迭代之前,它实际上不会做任何工作。