我试图从.csv文件中计算出最长的冻结时间。我可以使用data["TX"]
访问温度。对于行if data["TX"] < 0
,我不知何故得到错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
我该如何解决这个问题?
import pandas as pd
with open("klimaat.csv") as f:
counter = 0
freeze = 0
while True:
line = f.readline()
if not line:
break
if data["TX"] < 0:
counter += 1
if data["TX"] >= 0:
if counter > freeze:
freeze = counter
counter = 0
else:
counter = 0
print(freeze)
一段数据文件(&#34; TX&#34;是摄氏温度,乘以10):
STAID SOUID DATE TX Q_TX
162 100522 19010101 -31 0
162 100522 19010102 -13 0
162 100522 19010103 -5 0
162 100522 19010104 -10 0
162 100522 19010105 -18 0
162 100522 19010106 -78 0
162 100522 19010107 -66 0
162 100522 19010108 -6 0
162 100522 19010109 42 0
答案 0 :(得分:3)
data["TX"] < 0
给你一个面具。利用它来找到最长的零下温度序列。
import pandas as pd
data = pd.read_csv("klimaat.csv")
i = data['TX'] < 0
j = i.ne(i.shift()).cumsum()
freeze = j[i].value_counts().max()
这里的技巧是获取所有连续的True
值组(对应于零下温度)并找到最大的组。
print(freeze)
8
<强>详情
i
0 True
1 True
2 True
3 True
4 True
5 True
6 True
7 True
8 False
Name: TX, dtype: bool
j[i]
0 1
1 1
2 1
3 1
4 1
5 1
6 1
7 1
Name: TX, dtype: int64
j[i].value_counts()
1 8
Name: TX, dtype: int64