You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并Series为DataFrame时遇TypeError(float与str运算)求助

问题解决:TypeError: unsupported operand type(s) for -: 'float' and 'str'

错误原因

当你使用np.array(aud_usd_lst)将包含字符串(日期)和浮点数的元组列表转换为numpy数组时,numpy会将所有元素统一为字符串类型。这导致你的aud_usd_series和eur_aud_series中的汇率值实际是字符串,而非浮点数。后续pandas在处理这些Series时,若涉及数值运算(比如合并时的内部对齐逻辑),就会触发字符串与浮点数无法运算的类型错误。

修复后的代码

方法1:直接拆分列表构造Series(推荐)

不需要借助numpy,直接从列表中提取索引和数值:

import pandas as pd
import numpy as np

aud_usd_lst = [
    ('2020-09-08', 0.7280),
    ('2020-09-09', 0.7209),
    ('2020-09-11', 0.7263),
    ('2020-09-14', 0.7281),
    ('2020-09-15', 0.7285),
    ]

eur_aud_lst = [
    ('2020-09-08',  1.6232),
    ('2020-09-09',  1.6321),
    ('2020-09-10',  1.6221),
    ('2020-09-11',  1.6282),
    ('2020-09-15',  1.6288),
    ]

# 拆分日期和数值,直接构造Series
aud_usd_series = pd.Series([x[1] for x in aud_usd_lst], index=[x[0] for x in aud_usd_lst])
eur_aud_series = pd.Series([x[1] for x in eur_aud_lst], index=[x[0] for x in eur_aud_lst])

# 合并为DataFrame
df = pd.DataFrame({'AUD/USD': aud_usd_series, 'EUR/AUD': eur_aud_series})
print(df)

方法2:转换numpy数组的数值类型为float

如果你坚持用numpy,可以手动将数值列转换为浮点数:

import pandas as pd
import numpy as np

aud_usd_lst = [
    ('2020-09-08', 0.7280),
    ('2020-09-09', 0.7209),
    ('2020-09-11', 0.7263),
    ('2020-09-14', 0.7281),
    ('2020-09-15', 0.7285),
    ]

eur_aud_lst = [
    ('2020-09-08',  1.6232),
    ('2020-09-09',  1.6321),
    ('2020-09-10',  1.6221),
    ('2020-09-11',  1.6282),
    ('2020-09-15',  1.6288),
    ]

# 转换数值为float类型
aud_usd_arr = np.array(aud_usd_lst)
aud_usd_series = pd.Series(aud_usd_arr[:,1].astype(float), index=aud_usd_arr[:,0])

eur_aud_arr = np.array(eur_aud_lst)
eur_aud_series = pd.Series(eur_aud_arr[:,1].astype(float), index=eur_aud_arr[:,0])

# 合并为DataFrame
df = pd.DataFrame([aud_usd_series, eur_aud_series]).T
df.columns = ['AUD/USD','EUR/AUD']
print(df)

说明

两种方法都能确保Series中的汇率值是浮点数类型,避免类型错误。方法1更简洁高效,无需额外的类型转换步骤,是推荐的做法。

内容的提问来源于stack exchange,提问作者ste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:25:23