相关疑难解决方法(0)

根据pandas中列的值从DataFrame中选择行

如何根据pandas中某些列中的值从DataFrame中选择行?
在SQL中我会使用:

SELECT *
FROM table
WHERE colume_name = some_value
Run Code Online (Sandbox Code Playgroud)

我试着看看熊猫文档,但没有立即找到答案.

python dataframe pandas

1649
推荐指数
15
解决办法
230万
查看次数

如果列中的值位于设置的值列表中,则过滤数据帧行

我有一个Python pandas DataFrame rpt:

rpt
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 47518 entries, ('000002', '20120331') to ('603366', '20091231')
Data columns:
STK_ID                    47518  non-null values
STK_Name                  47518  non-null values
RPT_Date                  47518  non-null values
sales                     47518  non-null values
Run Code Online (Sandbox Code Playgroud)

我可以过滤库存ID '600809'如下的行:rpt[rpt['STK_ID'] == '600809']

<class 'pandas.core.frame.DataFrame'>
MultiIndex: 25 entries, ('600809', '20120331') to ('600809', '20060331')
Data columns:
STK_ID                    25  non-null values
STK_Name                  25  non-null values
RPT_Date                  25  non-null values
sales                     25  non-null values
Run Code Online (Sandbox Code Playgroud)

我想把一些股票的所有行放在一起,例如['600809','600141','600329'].这意味着我想要这样的语法:

stk_list = ['600809','600141','600329']

rst = rpt[rpt['STK_ID'] in stk_list] # …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

378
推荐指数
7
解决办法
27万
查看次数

如何为Pandas数据帧实现'in'和'not in'

我怎样才能实现SQL的的等价物INNOT IN

我有一个包含所需值的列表.这是场景:

df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = ['UK','China']

# pseudo-code:
df[df['countries'] not in countries]
Run Code Online (Sandbox Code Playgroud)

我目前的做法如下:

df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = pd.DataFrame({'countries':['UK','China'], 'matched':True})

# IN
df.merge(countries,how='inner',on='countries')

# NOT IN
not_in = df.merge(countries,how='left',on='countries')
not_in = not_in[pd.isnull(not_in['matched'])]
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个可怕的kludge.任何人都可以改进吗?

python sql-function dataframe pandas

353
推荐指数
9
解决办法
34万
查看次数

有效地选择与Pandas DataFrame中的多个值之一匹配的行

问题

给出Pandas DataFrame中的数据,如下所示:

Name     Amount
---------------
Alice       100
Bob          50
Charlie     200
Alice        30
Charlie      10
Run Code Online (Sandbox Code Playgroud)

我想选择Name集合中几个值之一的所有行{Alice, Bob}

Name     Amount
---------------
Alice       100
Bob          50
Alice        30
Run Code Online (Sandbox Code Playgroud)

在熊猫中这样做的有效方法是什么?

我看到的选项

  1. 循环遍历行,使用Python处理逻辑
  2. 选择并合并许多语句,如下所示

    merge(df[df.name = specific_name] for specific_name in names) # something like this
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行某种连接

这里的表现权衡是什么?何时一种解决方案比其他方案更好?我错过了哪些解决方案?

虽然上面的示例使用字符串,但我的实际作业在数百万行上使用10-100个整数的匹配,因此快速的NumPy操作可能是相关的.

python pandas

39
推荐指数
2
解决办法
5万
查看次数

如何从pandas数据框中选择一个值是否在列表中?

看起来很难看:

df_cut = df_new[
             (
             (df_new['l_ext']==31) |
             (df_new['l_ext']==22) |
             (df_new['l_ext']==30) |
             (df_new['l_ext']==25) |
             (df_new['l_ext']==64)
             )
            ]
Run Code Online (Sandbox Code Playgroud)

不起作用:

df_cut = df_new[(df_new['l_ext'] in [31, 22, 30, 25, 64])]
Run Code Online (Sandbox Code Playgroud)

是否有上述"问题"的优雅和有效解决方案?

python select numpy dataframe pandas

30
推荐指数
2
解决办法
4万
查看次数

使用pandas从数据框中使用两个不同的列来选择行?

Q类似于: 使用值列表从pandas数据帧中选择行

如果两列中的任何一个值都在列表中,我想要数据帧.返回两列(合并#1和#4的结果.

import numpy as np
from pandas import *


d = {'one' : [1., 2., 3., 4] ,'two' : [5., 6., 7., 8.],'three' : [9., 16., 17., 18.]}

df = DataFrame(d)
print df

checkList = [1,7]

print df[df.one == 1 ]#1
print df[df.one == 7 ]#2
print df[df.two == 1 ]#3
print df[df.two == 7 ]#4

#print df[df.one == 1 or df.two ==7]
print df[df.one.isin(checkList)]
Run Code Online (Sandbox Code Playgroud)

python pandas

15
推荐指数
1
解决办法
2万
查看次数

python pandas 查询列表中的值

我想用来query()过滤 panda 数据框中出现在给定列表中的行。与这个问题类似,但我真的更喜欢使用query()

import pandas as pd
df = pd.DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]})
mylist =[5,3]
Run Code Online (Sandbox Code Playgroud)

我试过:

df.query('A.isin(mylist)')
Run Code Online (Sandbox Code Playgroud)

python pandas

11
推荐指数
1
解决办法
4666
查看次数

我可以将pandas.dataframe.isin()与数字容差参数一起使用吗?

我事先审查了以下帖子.有没有办法使用具有近似因子或容差值的DataFrame.isin()?还是有其他方法可以吗?

如果列中的值位于设置的值列表中,则过滤数据帧行

使用值列表从pandas数据帧中选择行

EX)

df = DataFrame({'A' : [5,6,3.3,4], 'B' : [1,2,3.2, 5]})

In : df
Out:
   A    B
0  5    1
1  6    2
2  3.3  3.2
3  4    5  

df[df['A'].isin([3, 6], tol=.5)]

In : df
Out:
   A    B
1  6    2
2  3.3  3.2
Run Code Online (Sandbox Code Playgroud)

python comparison floating-accuracy comparison-operators pandas

8
推荐指数
1
解决办法
2237
查看次数

如何检查pandas数据帧中是否存在具有特定列值的行

对熊猫来说很新鲜.

如果存在具有特定列值的行,是否有办法检查给定的pandas数据帧.假设我有一个"名称"列,我需要检查某个名称是否存在.

一旦我这样做,我将需要进行类似的查询,但一次只有一堆值.我读到有'isin',但我不确定如何使用它.因此,我需要进行一个查询,以便获得所有具有"Name"列的行,这些行与大量名称中的任何值匹配.

python dataframe pandas

5
推荐指数
1
解决办法
3万
查看次数

按列表顺序从列表中选择熊猫数据框的行

该问题最初是在此处作为评论提出的,但由于该问题被标记为重复,因此无法获得正确的答案。

对于给定的pandas.DataFrame,让我们说

df = DataFrame({'A' : [5,6,3,4], 'B' : [1,2,3, 5]})
df

     A   B
0    5   1
1    6   2
2    3   3
3    4   5
Run Code Online (Sandbox Code Playgroud)

我们如何基于列中的值从列表中选择行('A'例如)

例如

# from
list_of_values = [3,4,6]

# we would like, as a result
#      A   B
# 2    3   3
# 3    4   5
# 1    6   2
Run Code Online (Sandbox Code Playgroud)

使用此处isin提到的方法不能令人满意,因为它不能保持输入值列表的顺序。'A'

如何实现上述目标?

python dataframe pandas

5
推荐指数
2
解决办法
878
查看次数

Python Pandas:获取与列值匹配的所有行的索引

我有以下数据框:

Rec  Channel  Value1  Value2 
Pre             10      20
Pre             35      42
Event    A      23      39
FF              50      75
Post     A      79      11
Post     B      88      69
Run Code Online (Sandbox Code Playgroud)

我正在尝试确定此 Pandas Dataframe 的适当语法,了解如何为“通道”列等于 A 或 B 的所有实例建立索引。找到所有实例后,我想将它们打印出来。此外,我希望能够在脚本中调用每个索引以进行进一步的应用。

我希望显示为:

Rec  Channel  Value1  Value2
Event   A       23      39
Post    A       79      11
Post    B       88      69
Run Code Online (Sandbox Code Playgroud)

然后我想要一个“for 循环”,它会遍历并分别打印出每个索引实例,以便很容易识别并单独调用它们,以便在脚本中进一步使用。有人可以建议吗?

python indexing dataframe pandas

4
推荐指数
1
解决办法
7239
查看次数

按列表过滤熊猫数据框

我有一个数据框,其中有一行名为“Hybridization REF”。我想进行过滤,以便只获取与列表中的项目之一具有相同标签的项目的数据。

基本上,我想做以下事情:

dataframe[dataframe["Hybridization REF'].apply(lambda: x in list)] 
Run Code Online (Sandbox Code Playgroud)

但该语法不正确。

python numpy pandas data-science

2
推荐指数
3
解决办法
1万
查看次数

如何在Pandas DataFrame中使用/ in运算符?

我想从我的CSV文件中选择数据.

虽然我可以在哪个列中获取数据

"House" == 1 (any single number) 
Run Code Online (Sandbox Code Playgroud)

如下,我不知道如何获取数据

"House" in [1, 2, 3, 4, 6, 7, 8, 9, 10, 13, 17, 18, 20, 21, 23, 26, 28, 30, 34, 46, 57, 58, 61, 86, 89, 102, 121, 156].
Run Code Online (Sandbox Code Playgroud)
df = pd.read_csv('../../data/training_dataset_500.csv')
df[df['House']==1]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python pandas

-1
推荐指数
1
解决办法
1万
查看次数