python - 从熊猫数据框中删除行和列
问题描述
我有一个 CSV 文件,其中包含一个对称邻接矩阵,这意味着行和列具有等效的标签。
我想将它导入熊猫数据框,理想情况下弹出一些GUI并要求删除项目列表....然后将该列表放入并将相关行和列中的值设置为零并返回一个单独的更改数据框。
简而言之,采用以下矩阵的东西
a b c d e
一个 0 3 5 3 5
b 3 0 2 4 5
c 5 2 0 1 7
d 3 4 1 0 9
5 5 7 9 0
弹出一个简单的界面询问“应该删除哪些区域”和输入这些区域的行
并说输入了 c 和 e
返回
abcde
一个 0 3 0 3 0
b 3 0 0 4 0
c 0 0 0 0 0
d 3 4 0 0 0
e 0 0 0 0 0
更改后的条目以粗体显示
它应该能够为输入的尽可能多的区域执行此操作,最多可达 379....最好用逗号分隔
解决方案
通过索引值设置列和行DataFrame.loc
:
vals = ['c','e']
df.loc[vals, :] = 0
df[vals] = 0
#alternative
#df.loc[:, vals] = 0
print (df)
a b c d e
a 0 3 0 3 0
b 3 0 0 4 0
c 0 0 0 0 0
d 3 4 0 0 0
e 0 0 0 0 0
另一种解决方案是使用 numpy 广播创建布尔掩码并通过以下方式设置值DataFrame.mask
:
mask = df.index.isin(vals) | df.columns.isin(vals)[:, None]
df = df.mask(mask, 0)
print (df)
a b c d e
a 0 3 0 3 0
b 3 0 0 4 0
c 0 0 0 0 0
d 3 4 0 0 0
e 0 0 0 0 0
推荐阅读
- java - 是否有任何可用的 Java parallelstream 替代方案仍然并行运行线程
- php - 在 php 中包含不同的导航
- python - Tkinter:按下时更改按钮背景
- css - 背景大小是否适用于两个图像?
- tensorflow - 是否可以将 TensorFlow 的卷积函数与我自己的神经网络一起使用?
- sql - How to loop through JSON array to insert rows in SQL Table using TSQL?
- powershell - 搜索中的 Powershell 自定义日期和时间
- regex - 如何编写正则表达式来获取特定的日期时间?
- c# - ASPOSE 通过流将 PDF 转换为 SVG 会产生无效结果
- android - Android获取全局android用户交互监听器