将相同的字符串连接到数组或系列的所有元素

时间:2019-05-17 09:24:13

标签: python pandas numpy

我有一个整数np.array和一个单独的str,我想要一个类型为str的pd.Series,其中每个元素前面都有一个单独的str np.array中的一个。有没有一种方法可以在不创建包含str重复适当次数的大列表的情况下进行此操作?类似于麻木的广播将是理想的。

我尝试了pandas.Series.str.catnp.core.defchararray.add,但是它们都只对元素元素进行相等长度的Series / array的加法运算。

以下是我想要的功能的示例:

# This is not code that will actually run!
nums = np.array([1, 2, 3, 4, 5])
name = "name "

result = concat_one_to_many(name, nums)

最后,我应该得到一个带有以下值的pd.Series

"name 1"
"name 2"
"name 3"
"name 4"
"name 5"

这必须尽可能快。这就是我避免循环或python列表理解的原因。如果无法避免这些问题,那么实现它们的最快方法是什么?

3 个答案:

答案 0 :(得分:1)

您可能会使用map函数。

new_l = pd.Series(map(lambda x: name+str(x), nums))

map函数将遍历数组nums并将定义的函数应用于每个元素。在这里,lambda函数将应用操作name + str(x),其中x是nums数组的元素。用pd.Series包装整个函数将返回带有默认索引的pandas系列。

答案 1 :(得分:1)

如果要使用pd.Series,可以将一个字符串添加到pandas系列中,并将其添加到每个元素中:

numsAsSeries = pd.Series(nums)
wantedResult = name + numsAsSeries.astype(str)

答案 2 :(得分:1)

spawn sftp user@server user@server´s password: user@hostname: /home/user 是您所需要的,但是必须给它一个字符串数组,而不是数字类型:

np.char.replace