我试图能够读取一个文件,我将在该文件中提取该位置的名称,然后计算他们获得的平均雪量。 这是我到目前为止所做的。
import pandas
data = pandas.read_csv('filteredData.csv')
if ('NAME' == 'ADA 0.7 SE, MI US'):
data.ix['1/1/2016':'12/31/2016']
newdata=data['SNOW'].mean()
我仍然不确定这样做会不会更好,方法是将地点名称分组,然后计算平均降雪量。
请耐心等待我,我仍然是熊猫新手。
此图片只是二十个不同位置的一部分:
答案 0 :(得分:0)
您似乎可以使用groupby()
:
import pandas as pd
from datetime import datetime
# Create test data
df = pd.DataFrame({
"name": ["place1", "place1", "place1", "place2", "place2", "place2"] * 2,
"date": ["1/1/2016", "1/2/2016", "1/3/2016"] * 2 + ["1/1/2017", "1/2/2017", "1/3/2017"] * 2,
"snow": [10.0, 20.0, 30.0, 100.0, 200.0, 300.0, 0.0, 1.0, 2.0, 1000.0, 2000.0, 3000.0]
})
# Transform string date to datetime format
df["date"] = pd.to_datetime(df["date"])
df
看起来像:
date name snow
0 2016-01-01 place1 10.0
1 2016-01-02 place1 20.0
2 2016-01-03 place1 30.0
3 2016-01-01 place2 100.0
4 2016-01-02 place2 200.0
5 2016-01-03 place2 300.0
6 2017-01-01 place1 0.0
7 2017-01-02 place1 1.0
8 2017-01-03 place1 2.0
9 2017-01-01 place2 1000.0
10 2017-01-02 place2 2000.0
11 2017-01-03 place2 3000.0
然后计算某个组的平均雪量,在这种情况下,我按名称和年份分组:
# Group dataset by name of place and year, calculate the average amount of snow for each group
df["snow_average"] = df.groupby(["name", df.date.dt.year])["snow"].transform("mean")
df
现在看起来像:
date name snow snow_average
0 2016-01-01 place1 10.0 20.0
1 2016-01-02 place1 20.0 20.0
2 2016-01-03 place1 30.0 20.0
3 2016-01-01 place2 100.0 200.0
4 2016-01-02 place2 200.0 200.0
5 2016-01-03 place2 300.0 200.0
6 2017-01-01 place1 0.0 1.0
7 2017-01-02 place1 1.0 1.0
8 2017-01-03 place1 2.0 1.0
9 2017-01-01 place2 1000.0 2000.0
10 2017-01-02 place2 2000.0 2000.0
11 2017-01-03 place2 3000.0 2000.0
您可以根据自己的需要更改groupby()
条件。我使用name
和年份,因为这就是你想要的样子,从你的例子来看。
修改强>
道歉,我感到沮丧。您似乎误解了我的答案,并且您需要手动创建新的数据框。您可以使用csv文件中的数据集,并执行与上述相同的命令,但将它们应用于您调用data
的数据集:
import pandas
data = pandas.read_csv('filteredData.csv')
# Transform string date to datetime format
data["date"] = pd.to_datetime(data["date"])
print data
# Group dataset by name of place and year, calculate the average amount of snow for each group
data["snow_average"] = data.groupby(["name", data.date.dt.year])["snow"].transform("mean")
print data