为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2022-06-22 18:51:25
所以我得到了我想要修改我的数据框的表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:00latlon                                                                                  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 londeg32.225583   -64.73613932.225583   -64.73613932.225583   -64.73613932.225583   -64.736139更新:我使用以下方法从数据集中获得了第一个表: df = old_df.pivot_table('DepthBLS', ['latlon'], 'Date')所以我的问题也通过从一开始就解决了: df = old_df.pivot_table('DepthBLS', ['latlon','latdeg','londeg'], 'Date')并且无需重新索引。对不起,现在我发现这有点傻!但是如果我有一个复式表并且没有原始数据可以使用,我得到的答复非常有用。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

关于您得到的错误df.insert(),该函数没有返回(即返回None),如果您使用 分配数据框df = df.insert(...),这可能是问题的根源。而是省略分配,只使用df.insert(...).


如果您仍然有问题,还有其他方法可以实现此目的。如果您在与此对齐的单独数据框中有latdeg和列,则可以使用以下命令添加它们(第二个数据框在哪里,用于忽略索引):londeglatlondf.values


df['latdeg'] = latlondf['latdeg'].values

df['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 pd

import numpy as np


# replicate the dataframes


df = 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: insert


df.insert(0, "latdeg", latlondf["latdeg"].values)

df.insert(1, "londeg", latlondf["londeg"].values)


# Option 2 - assign and reindex

df["latdeg"] = latlondf["latdeg"].values

df["londeg"] = latlondf["londeg"].values



df = df.reindex(

    columns=["latdeg", "londeg"]

    + [i for i in df.columns if i not in ["latdeg", "londeg"]]

)


# check output


df

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

latlon                  

321332106443701 32.225583   -64.736139  20.40   20.33   20.30

321332106443703 32.225583   -64.736139  19.17   19.16   19.10

321540110205501 32.225583   -64.736139  10.99   10.97   10.98

321540110205502 32.225583   -64.736139  10.00   9.99    9.99


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信