Pandas 如何将此数据帧转换为以下格式?
我有一个.csv文件,其中包含以下方式的表:Pandas 如何将此数据帧转换为以下格式?,pandas,datetime,dataframe,matplotlib,Pandas,Datetime,Dataframe,Matplotlib,我有一个.csv文件,其中包含以下方式的表: lon lat Day1 Day2 Day3 .... 77.32 28.42 1250 850 680 77.32 28.88 786 986 760 Albedo Values 11-11-2016 1250 12-11-2016 850 13-11-2016 680 . . . . . . . .
lon lat Day1 Day2 Day3 ....
77.32 28.42 1250 850 680
77.32 28.88 786 986 760
Albedo Values
11-11-2016 1250
12-11-2016 850
13-11-2016 680
. . . . . . .
. . . . . . .
给定一个特定的lat-lon值,比如lon=77.32和lat=28.42,我想读取一行并按以下方式重新排列它:
lon lat Day1 Day2 Day3 ....
77.32 28.42 1250 850 680
77.32 28.88 786 986 760
Albedo Values
11-11-2016 1250
12-11-2016 850
13-11-2016 680
. . . . . . .
. . . . . . .
“日期”列已替换为日期列表
背景:
我想根据这些数据进一步绘制一个折线图。目前,我正在尝试以下代码来绘制此数据:
#relevant imports:
import matplotlib.pyplot as plt
import pandas as pd
import statsmodels.api as sm
#specifying lat lon value range:
l=float(28.42)
l1=float(28.43)
k=float(77.32)
k1=float(77.33)
#reading the relevant row
df=pd.read_csv(path+file, index_col=['lon','lat']).query( '@k <= lon < @k1 and @l < lat <= @l1').T
print(df)
^这是我现在正在使用的数据帧,它是一种临时的方法
df.plot(legend=True) #plot column
plt.show()
输出:
正如您所看到的,x轴上没有标签,对于我当前使用的数据帧,我无法在x轴上添加日期。一旦得到所需的数据帧,我就可以解决这个问题。即使你能建议我一种方法,用这个临时数据框在x轴上添加日期,我的问题也会得到解决。希望我的问题有意义。谢谢 我认为需要将列转换为datetime
:
df = df.melt(['lon','lat'], var_name='date')
df['date'] = pd.to_datetime(df['date'])
print (df)
lon lat date value
0 77.32 28.42 2016-11-11 1250
1 77.32 28.88 2016-11-11 786
2 77.32 28.42 2016-12-11 850
3 77.32 28.88 2016-12-11 986
4 77.32 28.42 2016-11-13 680
5 77.32 28.88 2016-11-13 760
df.plot(x='date', y='value', legend=True)