在python中,在双条目表的第一个位置插入列
所以我得到了一个表,我想用在python中,在双条目表的第一个位置插入列,python,pandas,dataframe,insert,Python,Pandas,Dataframe,Insert,所以我得到了一个表,我想用df.pivot\u table()修改我的数据帧,我得到了如下结果: 但现在我想把这些站和它们的纬度和经度值联系起来。这些是我在不同数据帧中拥有的列,我认为一个好方法是将这些变量放在这个数据帧中的station列(latlon)之前 我试着使用df.insert(),但是给它loc=0会删除我的数据帧 有没有办法做到这一点?或者我应该通过索引或类似的方式将它们联系起来?也许有一个更简单的方法来想象我想要什么,但我不知道 Date 2009-01-01 00:0
df.pivot\u table()
修改我的数据帧,我得到了如下结果:
但现在我想把这些站和它们的纬度和经度值联系起来。这些是我在不同数据帧中拥有的列,我认为一个好方法是将这些变量放在这个数据帧中的station列(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_表('DepthBLS',['latlon','Date')
所以我的问题也从一开始就解决了:
df=旧的数据透视表('DepthBLS'、['latlon'、'latdeg'、'londeg']、'Date')
而且不需要重新编制索引。对不起,我现在明白了,这有点傻!但是,如果我有一个双条目表,并且没有原始数据可以使用,那么我得到的回复非常有用。关于使用
df.insert()
得到的错误,函数没有返回(即返回None
),如果使用df=df.insert(…)
分配数据帧,这可能是问题的根源。相反,省略赋值,只需使用df.insert(…)
如果您仍然有问题,有其他方法来实现这一点。如果在与此数据框对齐的单独数据框中有latdeg
和londeg
列,则可以使用以下方法添加它们(其中latlondf
是第二个数据框,使用.values
忽略索引):
默认情况下,这些列将显示在数据帧的右侧,但您可以使用df.reindex()
将它们显示在数据帧的左侧:
复制数据帧并展开一些:
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
欢迎来到stackoverflow!你能复制并粘贴数据框中的一些行以使用itI吗?我发现了如何在原始帖子中粘贴一些行。你完全正确,我只使用df.insert(…)省略了分配,它成功了!非常感谢。现在我只有索引问题,但我想我知道如何解决它们。谢谢谢谢谢谢
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