python - 如何在 python 中将多索引附加到我的数据框?
问题描述
我想在我的数据框中添加一个多索引。我查看了 pandas.pydata[documentation][1]
没有任何运气。
我的数据框看起来像这样,其中名称是索引,日期包括船只的速度:
27/02/2020
Name
MAERSK EDMONTON 19.1
MAERSK EMDEN 0.0
MAERSK ENPING 0.0
MAERSK ESSEN 0.0
MAGLEBY MAERSK 0.1
METTE MAERSK 17.7
MSC AMBITION 0.0
MSC ARIANE 17.4
MSC CAMILLE 0.0
所需的输出将如下所示。这些船只属于给定的联盟,在这种情况下是 2M 联盟。
2M_Alliance
27/02/2020
Name
MAERSK EDMONTON 19.1
MAERSK EMDEN 0.0
MAERSK ENPING 0.0
MAERSK ESSEN 0.0
MAGLEBY MAERSK 0.1
METTE MAERSK 17.7
MSC AMBITION 0.0
MSC ARIANE 17.4
MSC CAMILLE 0.0
这是我到目前为止所得到的。
df_alli = df[df.Name.isin(["MAERSK EMDEN", "METTE MAERSK", "MAGLEBY MAERSK", "MSC ARIANE", "MAERSK EDMONTON", "MAERSK ENPING", "MSC AMBITION", "MSC CAMILLE", "MAERSK ESSEN"])]
df_name = pd.DataFrame()
df_name["Name"] = df_alli["Name"]
df_name[date] = df_alli[date]
#df_name = df_name.set_index("Name")
arrys = [["2M_Alliance"], df_name["Name"]]
s = pd.MultiIndex.from_product(arrys, names=["Alliance", "Name"])
s = pd.Series(df_name[date], index=s)
s = pd.DataFrame(s)
print(s)
输出看起来不错,但 NaN 没有填写,我不知道为什么。输出:
27/02/2020
Alliance Name
2M_Alliance MAERSK EDMONTON NaN
MAERSK EMDEN NaN
MAERSK ENPING NaN
MAERSK ESSEN NaN
MAGLEBY MAERSK NaN
METTE MAERSK NaN
MSC AMBITION NaN
MSC ARIANE NaN
MSC CAMILLE NaN
解决方案
创建新列DataFrame.assign
,然后使用DataFrame.set_index
:
df_name = df_alli.assign(Alliance = '2M_Alliance').set_index(['Alliance','Name'])
print (df_name)
27/02/2020
Alliance Name
2M_Alliance MAERSK EDMONTON 19.1
MAERSK EMDEN 0.0
MAERSK ENPING 0.0
MAERSK ESSEN 0.0
MAGLEBY MAERSK 0.1
METTE MAERSK 17.7
MSC AMBITION 0.0
MSC ARIANE 17.4
MSC CAMILLE 0.0
推荐阅读
- python-3.x - 如何让 python -m unittest discover 处理 PEP 420 命名空间包?
- python - 当在每个循环 x 以某种方式大 1 之后调用 total = total + term(k) 时。为什么?
- ios - Swift - 在 UITableView 中设置清晰的背景颜色
- firebase - 错误:INTERNAL firebase 功能,与 nodemailer 一起使用时
- php - 如何使用带有公共文件夹的 PHP 找到我的 CSS 链接的正确路径
- angular - Angular 8 构建中断,原因是:SyntaxError: 'return' outside of function
- java - 在 android studio 中使用 AsyncTask 从套接字读取数据
- json - 在从 json 调用的命令中包含空格
- c# - 在 MVC 中创建图表返回 System.NotSupportedException
- c# - 确定站点正在使用的 Angular/AngularJS 版本的最快和最好的方法是什么?