数据框中的 .map(str) 和 .astype(str) 有什么区别

tar*_*ahu 6 python dataframe pandas

我有一个列名 col1 和 col2 的整数类型条目的数据框。我想将 col1 的条目与 col2 以及中间的“.”(点)连接起来。我搜索并发现要添加两个列条目:

df['col'] = df['col1'].map(str) + df['col2'].map(str)
Run Code Online (Sandbox Code Playgroud)

并添加一个点:

df['col'] = df['col1'].astype(str) + '.'
Run Code Online (Sandbox Code Playgroud)

但我想要这样的东西

df['col'] = each entries of df['col1'] + '.' + each entries of df['col2']
Run Code Online (Sandbox Code Playgroud)

.map(str) 和 .astype(str) 之间有什么区别。这适合我的情况。

Att*_*son 8

map将获取原始列表的每个元素并应用函数或 lambda 表达式。在这种紧凑的形式中,您的函数是str(). 它有更多的应用程序。例如,您可以编辑返回新列表的每个元素。这是可能的,因为 DataFrame 单元可以转换为字符串。

astype是 DataFrames 的 Pandas 函数(以及 numpy 数组的 numpy 函数),它将对象强制转换为指定类型,因此在这里它几乎没有实际区别,除了它可能性能更高,因为与多次调用相比它只是 1 个操作,并且它是本机的在 Pandas 中定义。时间-它来验证。需要注意的是:astype强制转换和 一样map,会创建一个新对象,而不是改变现有对象。