Python 将元组列转换为多索引
因此,我的代码的组织结构类似于以下内容。它将创建填充元组的列:Python 将元组列转换为多索引,python,pandas,dataframe,jupyter-notebook,multi-index,Python,Pandas,Dataframe,Jupyter Notebook,Multi Index,因此,我的代码的组织结构类似于以下内容。它将创建填充元组的列: import pandas as pd d = [] d.append({'wilderness':('bear','salmon'), 'domestic':('cat','mouse'), 'farm':('wolf','sheep')}) d.append({'wilderness':('polar bear','seal'), 'domestic':('spider','fly'), 'farm':('cow','gras
import pandas as pd
d = []
d.append({'wilderness':('bear','salmon'), 'domestic':('cat','mouse'), 'farm':('wolf','sheep')})
d.append({'wilderness':('polar bear','seal'), 'domestic':('spider','fly'), 'farm':('cow','grass')})
pd.DataFrame(d)
根据这个例子,每个元组的元素是相关的,这里是捕食者和猎物。我真的不想把这些元组分割成不相关的独立列,而是希望这些元组对之间的密切关系以某种方式留在结构中
问题是,我的示例中的每个字符串都比这里的动物名称长一点,当我在Jupyter笔记本中查看数据帧时,我根本看不到元组的第二个元素,我需要能够看到它,甚至选择它等等
所以最初认为Jupyter中可能有一些设置,它将使每个元组元素进入第二行。现在我认为最好的解决方案可能是使用,但我在解决如何使用它时遇到了很多困难。看了几个例子和例子
有人知道怎么做吗?列标题应该有两个级别,例如家养捕食者/猎物和元组元素进入每个新的子列
我尽量不在Pandas和NumPy中使用for循环,但在这种情况下,很难不使用for循环,而且性能也不是问题,因此我更愿意使用这种创建数据帧的for循环友好方法
编辑-这里是所需的输出
您可以与列表理解一起使用
:
df = pd.concat([pd.DataFrame(x, columns=['predator','prey']) for x in df.values.T.tolist()],
axis=1,
keys=df.columns)
print (df)
domestic farm wilderness
predator prey predator prey predator prey
0 cat mouse wolf sheep bear salmon
1 spider fly cow grass polar bear seal
谢谢,它很管用!我正在研究具体的方法。查看了
df.values.T.tolist()
,这是我第一次看到列表理解与pd.DataFrame
命令一起使用。我认为,keys
think you used是它所做的,看起来它根本不需要多索引的东西。
df = pd.concat([pd.DataFrame(x, columns=['predator','prey']) for x in df.values.T.tolist()],
axis=1,
keys=df.columns)
print (df)
domestic farm wilderness
predator prey predator prey predator prey
0 cat mouse wolf sheep bear salmon
1 spider fly cow grass polar bear seal