我的数据框包含以下列:
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'
请告知。
答案 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]