python - 如何解决 FunctionError 和 MapError
问题描述
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]
。
解决方案
基于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
在调用函数的结果上返回一个迭代器,并且在您迭代它之前实际上不做任何工作。
推荐阅读
- javascript - 在 Meteor js 中初始化和使用 Swup
- r - 如何截断R中的数据?
- android - 使用流(While)控件在kotlin中大于或等于7和更少的音符问题
- html - z-index 和带 alpha 的线性渐变
- html - HTML - 在 div 中包装 td
- python - 嵌套列表列出到新列
- scala - 如何在 Scala 的 JCommander 中使用数组
- vue.js - Nuxt.js 在渲染之前从头部删除所有 css 样式链接
- android - 如何将图像从 URL 保存到本地并获取它的 Uri?
- android - AnimatorSet - 出现错误:一次只能在 ModelRenderable 上播放一个 ModelAnimator