python - 按值过滤相同类型的DataFrame
问题描述
我必须从本质上DataFrame
关联Type1
并始终返回 type 的状态。的内容表明我应该只使用一个数组,但我需要能够像字典一样索引它,这就是我使用. 如果有更好的设计方法请告诉我。Type2
df[t1][t2]
State
DataFrame
numpy
DataFrame
我正在尝试收集所有type1,type2
组合的列表,其中它们在df
特定状态下的值匹配。我可以过滤一行:
row = df[type1]
row[row == state]
但是我怎样才能过滤整个DataFrame
?
解决方案
我建议将格式更改为MultiTndex Series
:
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
print (df)
A B C
0 8 8 3
1 7 7 0
2 4 2 5
a = df.stack()
print (a)
0 A 8
B 8
C 3
1 A 7
B 7
C 0
2 A 4
B 2
C 5
dtype: int32
b = a[a == 8].index.remove_unused_levels().tolist()
print (b)
[(0, 'A'), (0, 'B')]
编辑:
为了获得更好的性能,可以使用numpy.where
匹配值的索引,然后将zip
索引和列名索引到元组:
np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
print (df)
A B C
0 8 8 3
1 7 7 0
2 4 2 5
a = np.where(df == 8)
print (a)
(array([0, 0], dtype=int64), array([0, 1], dtype=int64))
b = list(zip(df.index[a[0]], df.columns[a[1]]))
print (b)
[(0, 'A'), (0, 'B')]
推荐阅读
- eucalyptus - 我应该使用哪种 Ubuntu 云映像格式?
- azure - 针对 Azure 中的 VM 的自定义指标
- kotlin - 如何在 Kotlin 中声明 JavaScript 类“google.visualization.AreaChart”?
- php - 在 Woocommerce 商店的产品图片下显示可变产品的产品属性值
- c++ - 在什么情况下可能需要动态分配指向函数的指针?
- c++ - 如何使用 WinAPI 函数检查当前进程是否作为 Windows 服务运行?
- python - 将复杂的数据字典转换为数据帧
- ajax - 管理三个表之间的关系
- perl - 如何拆分具有特定数字的一组字符串
- laravel - 在 Laravel install 中通过 NPM 安装 Bootstrap