【发布时间】:2020-12-08 14:22:22
【问题描述】:
我有一个包含字符串和整数值的数据框。
附加示例数据字典以了解我拥有的数据框:
data = {
'col1': ['A','A','A','B','B','B','C','C','C','D','D','D'],
'col2': [10,20,30,10,20,30,10,20,30,10,20,30],
'col3': ['X','X','X','X','Y','X','X','X','Y','Y','X','X'],
'col4': [45,23,78,56,12,34,87,54,43,89,43,12]
'col5': [3,4,6,4,3,2,4,3,5,3,4,6]
}
我需要提取数据如下:
- col4 的最大值
- 按 col1 分组
- 如果值为 Y,则从结果中过滤掉 col3
- 从结果中过滤 col5 以仅显示不超过 5 的值。
所以我尝试了一些方法并遇到了以下问题。
1- 我使用以下方法从数据中找到最大值。但我无法从每个组中找到最大值。
print(dataframe['col4'].max()) #this worked to get one max value
print(dataframe.groupby('col1').max() #this doesn't work
第二个对我不起作用,因为它也会返回 col2 的最大值。我需要结果对每个组下的最大行有 col2 值。
2- 我无法在一个命令中同时对 col3 (str) 和 col5 (int) 应用过滤器。有什么办法吗?
print(dataframe[dataframe['col3'] != 'Y' & dataframe['col5'] < 6]) #generates an error
我期望的输出是:
col1 col2 col3 col4 col5
0 A 10 X 45 3
3 B 10 X 56 4
6 C 10 X 87 4
10 D 20 X 43 4
#
# 78 is max in group A, but ignored as col5 is 6 (we need < 6)
# Similarly, 89 is max in group D, but ignored as col3 is Y.
如果我做错了什么,我深表歉意。我对此很陌生。
谢谢。
【问题讨论】:
标签: python-3.x dataframe pandas-groupby data-filtering