我有一个整数np.array
和一个单独的str
,我想要一个类型为str
的pd.Series,其中每个元素前面都有一个单独的str
np.array
中的一个。有没有一种方法可以在不创建包含str
重复适当次数的大列表的情况下进行此操作?类似于麻木的广播将是理想的。
我尝试了pandas.Series.str.cat
和np.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列表理解的原因。如果无法避免这些问题,那么实现它们的最快方法是什么?
答案 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