在python中的复式表的第一位插入列

所以我得到了我想要修改我的数据框的表df.pivot_table(),我得到了这样的东西:


数据框


但现在我想将这些站点与它们的纬度和经度值联系起来。这些是我在不同数据框中的列,我认为一个好的方法是将这些变量放在此数据框中的站列(latlon)之前。


我尝试使用df.insert()但给它 loc=0 会删除我的数据框。


有没有办法做到这一点?或者我应该通过索引或类似的方式将它们联系起来?也许有一种更简单的方法可以将我想要的东西形象化,但我不知道。


Date    2009-01-01 00:00:00     2009-01-02 00:00:00     2009-01-03 00:00:00

latlon                                                                                  

321332106443701     20.40   20.33   20.30   

321332106443703     19.17   19.16   19.16   

321540110205501     10.99   10.97   10.98   

321540110205502     10.00   9.99    9.99     

我想补充的是:


latdeg londeg

32.225583   -64.736139

32.225583   -64.736139

32.225583   -64.736139

32.225583   -64.736139


更新:我使用以下方法从数据集中获得了第一个表: df = old_df.pivot_table('DepthBLS', ['latlon'], 'Date')


所以我的问题也通过从一开始就解决了: df = old_df.pivot_table('DepthBLS', ['latlon','latdeg','londeg'], 'Date')


并且无需重新索引。对不起,现在我发现这有点傻!但是如果我有一个复式表并且没有原始数据可以使用,我得到的答复非常有用。


慕村225694
浏览 177回答 1
1回答

至尊宝的传说

关于您得到的错误df.insert(),该函数没有返回(即返回None),如果您使用 分配数据框df = df.insert(...),这可能是问题的根源。而是省略分配,只使用df.insert(...).如果您仍然有问题,还有其他方法可以实现此目的。如果您在与此对齐的单独数据框中有latdeg和列,则可以使用以下命令添加它们(第二个数据框在哪里,用于忽略索引):londeglatlondf.valuesdf['latdeg'] = latlondf['latdeg'].valuesdf['londeg'] = latlondf['londeg'].values默认情况下,这些列将显示在数据框的右侧,但您可以使用以下命令将它们带到框架的左侧df.reindex():df = df.reindex(    columns=["latdeg", "londeg"]    + [i for i in df.columns if i not in ["latdeg", "londeg"]])复制您的数据框并扩展一些:import pandas as pdimport numpy as np# replicate the dataframesdf = pd.DataFrame(    [        [20.40, 20.33, 20.30],        [19.17, 19.16, 19.1],        [10.99, 10.97, 10.98],        [10.00, 9.99, 9.99],    ],    columns=["2009-01-01 00:00:00", "2009-01-02 00:00:00", "2009-01-03 00:00:00"],    index=[321332106443701, 321332106443703, 321540110205501, 321540110205502],)latlondf = pd.DataFrame(    [        [32.225583, -64.736139],        [32.225583, -64.736139],        [32.225583, -64.736139],        [32.225583, -64.736139],    ],    columns=["latdeg", "londeg"],)df.columns.name = "Date"df.index.name = "latlon"# Options 1: insertdf.insert(0, "latdeg", latlondf["latdeg"].values)df.insert(1, "londeg", latlondf["londeg"].values)# Option 2 - assign and reindexdf["latdeg"] = latlondf["latdeg"].valuesdf["londeg"] = latlondf["londeg"].valuesdf = df.reindex(    columns=["latdeg", "londeg"]    + [i for i in df.columns if i not in ["latdeg", "londeg"]])# check outputdfDate    latdeg  londeg  2009-01-01 00:00:00 2009-01-02 00:00:00 2009-01-03 00:00:00latlon                  321332106443701 32.225583   -64.736139  20.40   20.33   20.30321332106443703 32.225583   -64.736139  19.17   19.16   19.10321540110205501 32.225583   -64.736139  10.99   10.97   10.98321540110205502 32.225583   -64.736139  10.00   9.99    9.99
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python