根据条件从同一数据框中查找行

桑雅

我想在我的数据帧列表中找到与所选行相似的行的每一行,然后将这些行潜在地放入相关行下的同一数据帧中。基本上,我有一段时间的功耗,我想根据我定义的标准找到过去的匹配项。我的数据帧标头已附加。这可能吗?

timestamp     power  daytype  ...  dayofweek weekday  quarter
0 2014-10-15 12:30:00  0.031707  weekday  ...          2       2        4
1 2014-10-15 12:45:00  0.140829  weekday  ...          2       2        4
2 2014-10-15 13:00:00  1.703882  weekday  ...          2       2        4
3 2014-10-15 13:15:00  0.032661  weekday  ...          2       2        4
4 2014-10-15 13:30:00  0.032939  weekday  ...          2       2        4

根据@brentertainer 的回复,我尝试了以下方法:

dfNew = pd.DataFrame()
for index, row in dfAll.iterrows:
    mask = np.logical_and.reduce([
            dfAll['date']== row['date'],
            dfAll['hour']==row['hour']
            ])
    dfNew.append(dfAll.loc[mask,:])`

我想为每一行附加这些过滤值的新数据框。此外,我能否以某种方式附加一个额外的列,该列将包含过滤条目的行的索引?

小艺人

我认为您的问题的答案是“是”,但您描述的场景感觉相当抽象。我提供了一个类似的抽象示例来说明一些可能性,我希望您知道它如何适用于您的情况。

根据“相似”的构成,更改mask函数内部的定义。

创建虚拟数据:

import pandas as pd
import numpy as np

# make example repeatable
np.random.seed(0)

# make dummy data
N = 100
df = pd.DataFrame(data=np.random.choice(range(5), size=(N, 8)))
df.columns = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

更新建议:

def similar_rows(idx, row, df):
    mask = np.logical_and.reduce([
        df['a'] == row['a'],
        abs(df['b'] - row['b']) <= 1,
        df['h'] == (3 - row['h'])
    ])
    df_tmp = df.loc[mask, :]
    df_tmp.insert(0, 'original_index', idx)
    return df_tmp

# create result
df_new = pd.concat([similar_rows(idx, row, df) for idx, row in df.iterrows()])
df_new.reset_index(inplace=True)
df_new.rename({'index': 'similar_index'}, axis=1, inplace=True)
print(df_new.head(10))

结果:

   similar_index  original_index  a  b  c  d  e  f  g  h
0              1               0  4  0  0  4  2  1  0  1
1             88               0  4  1  4  0  0  2  3  1
2              0               1  4  0  3  3  3  1  3  2
3             59               1  4  1  4  1  4  1  2  2
4             82               1  4  0  2  3  4  3  0  2
5              4               2  1  1  1  0  2  4  3  3
6              7               2  1  1  3  3  2  3  0  3
7             37               2  1  0  2  4  4  2  4  3
8             14               3  2  3  1  2  1  4  2  3
9             16               3  2  3  0  4  0  0  2  3

原建议:

# get row at random
row = df.loc[np.random.choice(N), :]
print('Randomly Selected Row:')
print(pd.DataFrame(row).T)

# create and apply a mask for arbitrarily similar rows
mask = np.logical_and.reduce([
    df['a'] == row['a'],
    abs(df['b'] - row['b']) <= 1,
    df['h'] == (3 - row['h'])
])

print('"Similar" Results:')
df_filtered = df.loc[mask, :]
print(df_filtered)

结果:

Randomly Selected Row:
    a  b  c  d  e  f  g  h
23  3  2  4  3  3  0  3  0
"Similar" Results:
    a  b  c  d  e  f  g  h
26  3  2  2  4  3  1  2  3
60  3  1  2  2  4  2  2  3
86  3  2  4  1  3  0  4  3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据同一数据框中的其他行从数据框中删除行

来自分类Dev

Python Pandas 根据同一数据框中的多个列值查找列值

来自分类Dev

根据同一数据框中另一列内容的条件,在数据框中添加新列

来自分类Dev

根据通用值合并同一数据框中的行

来自分类Dev

根据通用值合并同一数据框中的行

来自分类Dev

如何检查同一数据框列中是否存在重复值,以及如何根据频率通过删除行来应用条件(条件)?

来自分类Dev

熊猫从同一数据框中减去2行

来自分类Dev

根据另一数据行中的条件来松散一个数据框中的值

来自分类Dev

如何根据条件用同一数据框中的另一个值替换熊猫数据框中的范围内的值

来自分类Dev

根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

来自分类Dev

如何根据同一数据框中另一列的值替换数据框中的值?

来自分类Dev

Pandas:来自同一数据框的列的条件连接

来自分类Dev

根据同一数据框另一列中的字符将文本列添加到数据框

来自分类Dev

如何根据同一数据框其他列中的值过滤熊猫数据框中的结果?

来自分类Dev

基于同一数据框中的多个条件创建新列

来自分类Dev

在同一数据框中对具有不同条件的时段进行排名

来自分类Dev

根据R中另一数据框中的条件值来匹配/子集一个数据框

来自分类Dev

根据Python中的多个条件,将一列从多个数据框合并到另一数据框

来自分类Dev

如何从同一数据框中查找另一列中包含唯一值的列值?

来自分类Dev

根据同一数据集中另一列中的值过滤数据绑定组合框

来自分类Dev

根据同一数据集中另一列中的值过滤数据绑定组合框

来自分类Dev

熊猫:在同一数据框中合并两行

来自分类Dev

根据数据框中某列的条件,删除同一行其他列中的数据

来自分类Dev

如何根据来自同一数据帧的多个列中的多个条件在数据帧中创建新列

来自分类Dev

从同一数据框中添加行

来自分类Dev

匹配同一数据框中的最近日期

来自分类Dev

在Python中连接同一数据框的多个列

来自分类Dev

迭代比较同一数据框中的列值

来自分类Dev

比较同一数据框列中的值

Related 相关文章

  1. 1

    根据同一数据框中的其他行从数据框中删除行

  2. 2

    Python Pandas 根据同一数据框中的多个列值查找列值

  3. 3

    根据同一数据框中另一列内容的条件,在数据框中添加新列

  4. 4

    根据通用值合并同一数据框中的行

  5. 5

    根据通用值合并同一数据框中的行

  6. 6

    如何检查同一数据框列中是否存在重复值,以及如何根据频率通过删除行来应用条件(条件)?

  7. 7

    熊猫从同一数据框中减去2行

  8. 8

    根据另一数据行中的条件来松散一个数据框中的值

  9. 9

    如何根据条件用同一数据框中的另一个值替换熊猫数据框中的范围内的值

  10. 10

    根据一列中的条件创建一个新的熊猫列,并从同一数据框中的多列中分配值

  11. 11

    如何根据同一数据框中另一列的值替换数据框中的值?

  12. 12

    Pandas:来自同一数据框的列的条件连接

  13. 13

    根据同一数据框另一列中的字符将文本列添加到数据框

  14. 14

    如何根据同一数据框其他列中的值过滤熊猫数据框中的结果?

  15. 15

    基于同一数据框中的多个条件创建新列

  16. 16

    在同一数据框中对具有不同条件的时段进行排名

  17. 17

    根据R中另一数据框中的条件值来匹配/子集一个数据框

  18. 18

    根据Python中的多个条件,将一列从多个数据框合并到另一数据框

  19. 19

    如何从同一数据框中查找另一列中包含唯一值的列值?

  20. 20

    根据同一数据集中另一列中的值过滤数据绑定组合框

  21. 21

    根据同一数据集中另一列中的值过滤数据绑定组合框

  22. 22

    熊猫:在同一数据框中合并两行

  23. 23

    根据数据框中某列的条件,删除同一行其他列中的数据

  24. 24

    如何根据来自同一数据帧的多个列中的多个条件在数据帧中创建新列

  25. 25

    从同一数据框中添加行

  26. 26

    匹配同一数据框中的最近日期

  27. 27

    在Python中连接同一数据框的多个列

  28. 28

    迭代比较同一数据框中的列值

  29. 29

    比较同一数据框列中的值

热门标签

归档