【问题标题】:How to convert this dataframe into the following format?如何将此数据框转换为以下格式?
【发布时间】:2018-12-13 16:19:10
【问题描述】:

我有一个 .csv 文件,其中包含以下方式的表格:

lon    lat    Day1   Day2   Day3   ....
77.32  28.42  1250   850    680   
77.32  28.88  786    986    760

给定一个特定的 lat lon 值,比如 lon=77.32 和 lat=28.42,我想读取一行并按以下方式重新排列:

              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)

输出:

lon      77.328125
lat      28.421875
Day1   1250.250000
Day2    804.250000
Day3    750.000000
Day4    713.875000
Day5    740.650000
Day6    840.250000
Day7    844.200000
Day8   1009.000000

^这是我现在正在使用的数据框,它是一种转换方法。

df.plot(legend=True) #plot column
plt.show()

输出:

如您所见,x 轴上没有标签,并且使用我当前使用的数据框,我无法在 x 轴上添加日期。一旦我得到所需的数据框,我就可以解决这个问题。即使您可以建议我使用这个临时数据框本身在 x 轴上添加日期,我的问题也将得到解决。希望我的问题有意义。谢谢。

【问题讨论】:

    标签: pandas datetime dataframe matplotlib


    【解决方案1】:

    我认为需要melt,然后将列转换为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) 
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2021-05-23
      • 1970-01-01
      • 2023-02-06
      • 2021-06-16
      • 2013-11-10
      相关资源
      最近更新 更多