如何将列表元素附加到pandas系列的每一行?

2024-10-01 07:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的熊猫系列,其中每一行都是一个没有空格的长字符串。它的形状是(250,)(即有250行)

import pandas as pd
sr1 = pd.Series(...)

                                                     0  
0    abdcadbcadcbadacbadbdddddacbadcbadadbcadbcadad...  
1    cacacdacadbdcadcabdcbadcbadbdabcabdbbbbbacdbac...  
2    bbbbbcadcacddabcadbcdabcbaddcbadcbadbcadbcaaba...  
3    acdbcdacdbadbadcbdbaaaacbdacadbacaddcabdacbdab...  
....

我有一个250个字符串的列表,我想把它附加到每一行的开头。在

^{pr2}$

如何将list_of_strings中的每个元素追加到sr1中的相应行?结果系列应该如下所示:

                                                    0  
0    prefix1    abdcadbcadcbadacbadbdddddacbadcbadadbcadbcadad...  
1    prefix2    cacacdacadbdcadcabdcbadcbadbdabcabdbbbbbacdbac...  
2    prefix3    bbbbbcadcacddabcadbcdabcbaddcbadcbadbcadbcaaba...  
3    prefix4    acdbcdacdbadbadcbdbaaaacbdacadbacaddcabdacbdab...  
....

我的第一个想法是尝试一下:

sr1.insert(0, "prefixes", value = list_of_strings)

但这会抛出错误AttributeError: 'Series' object has no attribute 'insert'。可以使用sr1sr1转换为pandas数据帧,前一个{}将生成一个包含两列的数据帧。在

在python中,我们可以用指定的分隔符连接字符串,如下所示:

first = "firstword"
second = "secondword"
combined = "    ".join([first, second])
## outputs 'firstword    secondword'

我不知道熊猫系列会怎么样。也许.apply(' '.join)不知何故?在


Tags: of数据字符串pandaslistseriesfirstpd
3条回答

首先需要从list创建Series,然后添加双^{}或{}-一个用于空白,另一个用于s

s = pd.Series(['a','b','c'])
list_of_strings = ["prefix1", "prefix2", "prefix3"]

print (pd.Series(list_of_strings, index=s.index).add(' ').add(s))
#same as
#print (pd.Series(list_of_strings, index=s.index)+ ' ' + s)
0    prefix1 a
1    prefix2 b
2    prefix3 c
dtype: object

另一个带有^{}的解决方案:

^{pr2}$

使用^{}解决方案,但需要DataFrame-通过构造函数或^{}

print (pd.DataFrame({'prefix':list_of_strings, 'vals':s}).apply(' '.join, axis=1))
0    prefix1 a
1    prefix2 b
2    prefix3 c
dtype: object

print (pd.concat([pd.Series(list_of_strings, index=s.index), s], axis=1)
         .apply(' '.join, axis=1))
0    prefix1 a
1    prefix2 b
2    prefix3 c
dtype: object

把前缀列表变成一系列长度为250的字母,然后加起来怎么样。在

sr0 = pd.Series(list_of_strings)
sr1 = sr0 + sr1

您可以制作一系列前缀,然后将这两个系列相加:

import pandas as pd

s1 = pd.Series(['a'*10,'b'*10,'c'*10])

s1
# returns:
# 0    aaaaaaaaaa
# 1    bbbbbbbbbb
# 2    cccccccccc


s2 = pd.Series(['pre1', 'pre2', 'pre3'])

s2+s1
# returns:
# 0    pre1aaaaaaaaaa
# 1    pre2bbbbbbbbbb
# 2    pre3cccccccccc

相关问题 更多 >