【问题标题】:How to select multiple rows based on header values?如何根据标题值选择多行?
【发布时间】:2019-10-13 15:47:19
【问题描述】:

我希望遍历 Pandas 数据帧的行,同时仅检查行中几列内的相似性。然后,我想检查相似性条件,然后进行日期比较(哪个更早/更晚)并将相应的更改应用于所选行的一个元素。

为了选择特定的行,我有点想要这样的东西:

p=z["product_name", "Category 1", "Category 2", "Features"].iloc[i-1:i]

我知道这不正确,但这只是提供一个想法。从众多标题中选择只有几个特定标题的行。

i=1
while (i<=len(z)):
    j=i+1
    p=z["product_name", "Category 1", "Category 2", "Features"].iloc[i-1:i]
    p=p.to_string(index=False)
    while(j<=len(z)):
        q=z["product_name", "Category 1", "Category 2", "Features"].iloc[j-1:j]
        q=q.to_string(index=False)
        if (p==q):
            if(z["Update Date"].iloc[i-1:i]>z["Update Date"].iloc[j-1:j]):
                 z.drop(j, axis=0)
        j=j+1
    i=i+1

我知道大部分代码实际上是错误的,但这是我正在尝试的方法。请提出解决此问题的更好方法/功能。

【问题讨论】:

  • 我知道,我已经在问题中提到它是错误的。我只是想让观众知道我在寻找什么。我想遍历数据框的行,一次只选择几列。

标签: python-3.x pandas dataframe selection


【解决方案1】:

我不完全了解您的问题,但是当您启动 i-1:i 时,您的代码中存在基本问题,它只给出了一个值,为什么您使用这一行而不是直接使用一个变量

p=z["product_name", "Category 1", "Category 2", "Features"].iloc[i-1:i]

试试这个:

p=z[["product_name", "Category 1", "Category 2", "Features"]].iloc[i-1:i]

【讨论】:

  • 我只想要一行,因为我要遍历多行-> 检查条件-> 并在字段中进行必要的更改。双方括号对我来说效果很好。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多