在pandas数据框中使用单引号和另一个列构建字符串

时间:2018-08-08 17:55:23

标签: python string pandas

我的数据框包含以下列:

grpby_sum_df.head()
Out[82]: 
   BusNumber PNode  participationFactor  normalized Contained by  \
0     242514  HQST                  1.0    0.000471         HQST   
1     242514  ISNE                  1.0    0.000471         ISNE   
2     242514  NBSO                  1.0    0.000471         NBSO   
3     242514  NSSO                  1.0    0.000471         NSSO   
4     242514  NYIS                  1.0    0.000471         NYIS   

  Initial Value    ParFac AutoCalc?  
0     SPECIFIED  0.000471        NO  
1     SPECIFIED  0.000471        NO  
2     SPECIFIED  0.000471        NO  
3     SPECIFIED  0.000471        NO  
4     SPECIFIED  0.000471        NO

我需要创建另一个名为gen的对象列,其后是中间的总线号列,并用单引号引起来,数字99也用单引号引起来。

Gen 'BusNumber' '99'

请告知。

3 个答案:

答案 0 :(得分:0)

这将添加您在问题中所给出的列,即以Gen 'BusNumber' '99'分隔的空格之间用引号引起来

df['Object'] = "Gen '" + df['BusNumber'].astype('str') + "' '99'"

答案 1 :(得分:0)

您只需要:

df['object'] = "Gen " + df.BusNumber.map(str) + " 99"

输出(省略一些不相关的列):

   BusNumber         object
0     242514  Gen 242514 99
1     242514  Gen 242514 99
2     242514  Gen 242514 99
3     242514  Gen 242514 99
4     242514  Gen 242514 99

答案 2 :(得分:0)

在熊猫中,字符串操作有时会非常慢,并且通过列表理解(如果相关的性能),您实际上可以获得更好的性能。

如果您使用的是Python 3.6+,则可以使用f字符串,并使用转义符(\)包含单引号:

df['Object'] = [f'Gen \'{i}\' \'99\'' for i in df.BusNumber]

如果使用旧版本的python,则可以使用.format()

df['Object'] = ['Gen \'{}\' \'99\''.format(i) for i in df.BusNumber]

或者:

df['Object'] = ['Gen \'%s\' \'99\'' %i for i in df.BusNumber]