python - Pandas:从 DataFrame 分配 MultiIndex 列
问题描述
我有一个带有 multiIndex 列的 DataFrame。假设它是这样的:
index = pd.MultiIndex.from_tuples([('one', 'a'), ('one', 'b'),
('two', 'a'), ('two', 'b')])
df = pd.DataFrame({'col': np.arange(1.0, 5.0)}, index=index)
df = df.unstack(1)
(我知道这个定义可能更直接)。我现在想基于 DataFrame 设置一个新的 0 级列。例如
df['col2'] = df['col'].applymap(lambda x: int(x < 3))
这不起作用。到目前为止,我发现的唯一方法是分别添加每一列: Pandas: add a column to a multiindex column dataframe ,或某种复杂的连接过程。
期望的结果是一个新的 0 级列'col2'
,其中包含两个 1 级子列:'a'
和'b'
任何帮助将不胜感激,谢谢。
解决方案
我相信需要没有unstack
和stack
过滤的解决方案boolean indexing
,rename
避免重复和最后使用的值DataFrame.append
:
df2 = df[df['col'] < 3].rename({'one':'one1', 'two':'two1'}, level=0)
print (df2)
col
one1 a 1.0
b 2.0
df = df.append(df2)
print (df)
col
one a 1.0
b 2.0
two a 3.0
b 4.0
one1 a 1.0
b 2.0
推荐阅读
- r - 动态选择带闪亮的输入时如何使用renderPrint显示实际变量名称
- javascript - Nextjs - Reactjs - 链接模式 - 不变违规:React.Children.only 预计会收到单个 React 元素子元素
- android - 将 uint8_t* 缓冲区转换为 jobject
- html -
不断脱落
- marklogic - 如何在 MarkLogic 中建立实体关系
- tensorflow - 使用 tensorflow 填充序列时出现“MemoryError”
- javascript - AngularJS - 在指令内的 $render 上动态应用类
- npm - NPM:无效的包名“无标题文件夹”:名称只能包含 URL 友好字符
- vhdl - 带启动的 VHDL 有限状态机计数器
- javascript - HTML 和纯 javascript 中的搜索框查找所有匹配的锚标记并显示结果