假设我有一个像这样的数据框
import pandas as pd
df = pd.DataFrame([[1, 2, 1], [1, 3, 2], [4, 6, 3], [4, 3, 4], [5, 4, 5]], columns=['A', 'B', 'C'])
>> df
A B C
0 1 2 1
1 1 3 2
2 4 6 3
3 4 3 4
4 5 4 5
原始表更加复杂,具有更多的列和行。
我想获得满足某些条件的第一行。例子:
但是,如果没有满足特定条件的行,那么我想在我按A降序排序(或者其他情况下按B,C等排序)后得到第一行
我可以通过在数据帧上进行迭代来做到这一点(我知道那胡扯:P)。因此,我更喜欢使用pythonic方法来解决它。
本教程是熊猫切片的很好的教程。确保您签出。在一些片段上…要对带有条件的数据帧进行切片,请使用以下格式:
>>> df[condition]
这将返回数据框的一部分,您可以使用对其建立索引iloc
。这是您的示例:
>>> df[df.A > 3].iloc[0]
A 4
B 6
C 3
Name: 2, dtype: int64
如果您真正想要的是行号,而不是使用iloc
,则为df[df.A > 3].index[0]
。
获取第一行,其中A> 4 AND B> 3:
>>> df[(df.A > 4) & (df.B > 3)].iloc[0]
A 5
B 4
C 5
Name: 4, dtype: int64
获取第一行,其中A> 3 AND(B> 3 OR C> 2)(返回第2行)
>>> df[(df.A > 3) & ((df.B > 3) | (df.C > 2))].iloc[0]
A 4
B 6
C 3
Name: 2, dtype: int64
现在,对于最后一种情况,我们可以编写一个函数来处理返回降序排列的帧的默认情况:
>>> def series_or_default(X, condition, default_col, ascending=False):
... sliced = X[condition]
... if sliced.shape[0] == 0:
... return X.sort_values(default_col, ascending=ascending).iloc[0]
... return sliced.iloc[0]
>>>
>>> series_or_default(df, df.A > 6, 'A')
A 5
B 4
C 5
Name: 4, dtype: int64
如预期的那样,它返回第4行。
问题内容: 我想获取基于条件选择的数据帧行数。我尝试了以下代码。 输出: 输出显示数据帧中每一列的计数。相反,我需要获得满足以上所有条件的单一计数?这该怎么做?如果您需要有关我的数据框的更多说明,请告诉我。 问题答案: 您要的是所有条件都为真的条件,所以答案是len,除非我误解了您的要求
我有以下数据帧: 我希望获得行ID,其中。 预期收益为。 有什么想法吗?
嗨,伙计们,我正在使用Laravel5.5,我有两个表,用户和服务 用户表 ID 名称 电子邮件 密码 地址 城市 国家 邮政编码 null 提前谢了。热烈问候:阿卜杜拉·沙希德。
我收藏了这样的文件: 我想找到所有的有效载荷。_id,其状态为真/假。预期结果是 到目前为止,我有这样的东西。 不确定如何为数组中的元素添加条件。
问题内容: 当日期列的值在日期列表中时,我想从熊猫数据框中删除行。以下代码不起作用: 我收到以下错误: ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。 问题答案: 您可以使用。 将返回布尔值,具体取决于每个元素是否在列表内。然后,您可以将转换为,反之亦然。
我正在通过Vuex商店中的axios从外部API获取数据,它为我提供了一个包含对象的数组——比方说——。 每个都有一个,我需要用它获取城市详细信息。我想将这个details对象作为一个新键添加到数组中。 现在我正在获取所有城市,并使用另一个Vuex操作获取城市详细信息。 所有城市的行动 获取所有城市后的变异 数组中的每个对象都有一个,我正在用它获取这个城市的详细信息。 我试图在动作中循环数组,以获