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]
。
答案 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
返回的事物感兴趣,建议您阅读iterables和iterators。 map
在调用该函数的结果上返回一个迭代器,并且直到您对其进行迭代之前,它实际上不会做任何工作。