我有一个名为“ obsData”的DataFrame变量,其结构为: 然后,我将此变量用作代码的输入(使用much help from 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”中数据的第一行。它仅能读取“日期”,而不能读取第二列“温度”。结果,split函数尝试分割'Date',但由于它只有一个值,因此出现错误:
ValueError: not enough values to unpack (expected 2, got 1)
我试图将DataFrame中的“ f”(即“ obsData”)重新定义为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()
答案 0 :(得分:1)
导入csv数据时,最好使用熊猫
<div class="grid">
<div class="top">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quis nemo doloremque tempora porro quos natus odio est tenetur facilis commodi voluptatum reprehenderit, in, consequatur pariatur. Voluptatum quam, modi sit. Eos. lorem</div>
<div class="btm">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cum ut maiores perspiciatis temporibus quae magni enim quas rerum deserunt expedita voluptas deleniti, labore dolore possimus quis officiis ducimus vel repellat.</div>
<div class="right"></div>
</div>
如果您仍然需要循环检查itertuples