python - 将映射元素按元素应用于系列上的每个元素(Pandas)

标签 python pandas

当我尝试以下操作时:

# Define the mapping
def my_float_to_string(f):
  return "{:g}".format(f)

# This returns numpy.float64
type(my_xls['Subject'][0])

my_df['foo'] = my_df['foo'].map(float_to_string)

我得到:

ValueError: Unkonwn format code 'g'for object of type 'str'

但是,以下效果很好

test = my_float_to_string(5.0)
print test 
'5'

为什么我无法在我的 Series 对象上按元素应用我的函数?

此外,为什么 DataFrames 和 Series 对于元素操作有不同的方法名称(即 Series 的 map 与 DataFrames 的 applymap)

最佳答案

使用时

my_df['foo'] = my_df['foo'].map(float_to_string)

float_to_string 接收字符串而不是 float 。检查您是否可以添加

assert(isinstance(f, float))

float_to_string中。

关于python - 将映射元素按元素应用于系列上的每个元素(Pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888095/

相关文章:

python - 从所有列中获取唯一值的高效而优雅的方式 - 大数据

python - 将 Pandas Dataframe 中的数据行输入到 csv 文件中的下一个空行

python - 如何在 pandas Dataframe 中找到 5 个连续的行,其中某一列的值至少为 0.5

python - 拆分 DataFrame 并立即将代码应用于所有 DataFrame?

python - Blob 的稳健跟踪

python - 只写一次文件

python - 除非我手动调用,否则我无法调用我的函数之一

python - 如何按文件大小分割Python日志文件

python - 从特定列创建数据框

python-3.x - 相对路径在 Jupyter 笔记本中的 Pandas python 中不起作用