Python中Series拼接异常:如何正确拼接ticker与SuperID列?
解决方案:Pandas列对应行字符串拼接问题
问题出在你使用了Python内置的str()函数处理整个Series对象,这会把整个Series转换成包含所有行的字符串(比如类似"0 44462\n1 44463\nName: SuperID, dtype: float64"),导致拼接时每行都带上了整个Series的内容,而非对应行的单个值。
要实现对应行的正确拼接,需要对SuperID列的每个元素单独转换为字符串,可以用以下两种方法:
方法1:使用.astype(str)(推荐)
这是Pandas中转换列元素类型的标准方法,会批量将列内每个元素转为字符串:
def excel_date(date1): temp = datetime.datetime(1899, 12, 30) delta = date1 - temp if date1 != 0 else temp - temp return float(delta.days) + (float(delta.seconds) / 86400) df3['SuperID'] = df3['Break_date'].apply(excel_date) # 对SuperID列每个元素转字符串后拼接 df3['SuperID2'] = df3['ticker'] + df3['SuperID'].astype(str)
方法2:使用.apply(str)
通过apply遍历列内每个元素,调用str()函数转换:
df3['SuperID2'] = df3['ticker'] + df3['SuperID'].apply(str)
两种方法都能实现每行ticker与对应SuperID的拼接,得到类似TSLA44462的结果。
内容的提问来源于stack exchange,提问作者Artrade
相关产品推荐
相关产品推荐

