我正在尝试使用pandas来平滑一些数据,但是我遇到了一个错误,告诉我没有要聚合的数字类型。我在互联网上找到了各种解决方案,但我无法解决这个错误。
我正在使用以下网址提供的数据:
http://archive.luftdaten.info/2017-12-01/2017-12-01_sds011_sensor_3687.csv
我用以下内容导入csv:
sensor = pd.read_csv("all.csv", sep=";")
我用
解析时间戳列sensor["timestamp"] = pd.to_datetime(sensor["timestamp"], infer_datetime_format=True, errors="coerce")
并将时间戳设置为索引
sensor = sensor.set_index("timestamp")
为了简单起见,我提取了一个列
p_1 = sensor["P1"]
我现在想使用以下方法重新采样数据一小时:
p_1.resample("1H").mean()
但这会返回错误:
pandas.core.base.DataError: No numeric types to aggregate
从我收集的搜索错误中,我必须以某种方式将列转换为数值,但我找不到任何能让我使用表格的函数。
编辑:我发现了这个,但我真的不知道如何应用于我的情况: https://stackoverflow.com/a/30660772/9153439
Edit2(已解决):
我可以通过使用
更改sensor
中的数据类型来重新取样数据
sensor["P1"] = sensor["P1"].apply(pd.to_numeric, errors='coerce')
我很确定我之前在p_1
子集上尝试了此操作,但无法使其正常工作。