首页 > 解决方案 > Python:读取和操作 DataFrame 数据时出错

问题描述

我有一个名为“obsData”的 DataFrame 变量,它具有以下结构: 在此处输入图像描述 然后我将此变量用作代码的输入(在 Stackoverflow 的帮助下),该代码每天使用以下命令将所有每小时数据排序为一行:

f = obsData

data = {}

for line in f:
    if 'Date' not in line or 'Temp' not in line:
        k, v, = line.split()                       # split line in 2 parts, v and k
        temperature = v.split(';')[1]
        if k not in data:
            data[k] = [temperature]
        else:
            data[k].append(temperature)


for k, v in data.items():
    outPut = "{} ;{}".format(k, ";".join(v))

我的问题是变量“line”永远无法超过“obsData”中数据的第一行。它只能读取“日期”,但不能读取第二列“温度”。结果,拆分函数尝试拆分“日期”,但由于它只有一个值,我得到了错误:

ValueError: not enough values to unpack (expected 2, got 1)

我试图将“f”(即“obsData”)从 DataFrame 重新定义为 ndarray 或字符串,以使代码更容易处理数据:

f = f.values                                             # into ndarry                 

f = f.astype(str)                                        # into string try 1

f[['Date', 'Temp']] = f[['Date', 'Temp']].astype(str)    # into string try 2

但由于某种原因,我不明白我无法转换它。我究竟做错了什么?任何帮助深表感谢!

编辑澄清:我得到的错误与

k, v, = line.split()  

标签: pythondataframe

解决方案


导入 csv 数据时最好使用 pandas

import pandas as pd

df = pd.read_csv('obsData.csv')

如果您仍然需要循环检查itertuples


推荐阅读