如何在Pandas DataFrame列中拼接字符串与连续整数序列
解决方案
你之前的问题出在直接把range对象转换成了字符串,导致每一行都得到了range(...)的文本,而不是逐个生成对应的数字后缀。以下几种单行代码都能实现需求:
方法1:列表推导式(最直观)
dataframe['new column'] = [f'ABCD_{i}' for i in range(z + 1, z + 1 + len(dataframe))]
这里range(z+1, z+1+len(dataframe))会生成从z+1开始、长度和dataframe一致的连续整数,通过列表推导式逐个和前缀拼接成字符串。
方法2:Pandas Series拼接
dataframe['new column'] = 'ABCD_' + pd.Series(range(z + 1, z + 1 + len(dataframe))).astype(str)
先把连续整数转换成Pandas的字符串Series,再和固定前缀字符串进行广播拼接。
方法3:Numpy数组拼接(适合大数据量)
import numpy as np dataframe['new column'] = 'ABCD_' + np.arange(z + 1, z + 1 + len(dataframe)).astype(str)
用numpy.arange生成连续整数数组,转成字符串后和前缀拼接,性能比列表推导式更优。
如果你的新列长度需要和another_dataframe一致,只需要把代码里的len(dataframe)替换成len(another_dataframe)即可,注意要确保两个DataFrame长度匹配,避免赋值时的长度不匹配错误。
内容的提问来源于stack exchange,提问作者Thomas Hemming Larsen
相关产品推荐
相关产品推荐

