相关疑难解决方法(0)

Pandas:如果特定列满足特定条件,则选择行

说我有这个数据框df:

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

说你要选择所有的行哪列C是>1。如果我这样做:

newdf=df['C']>1
Run Code Online (Sandbox Code Playgroud)

我只获得True或False在结果df中。相反,在给出的示例中,我想要这个结果:

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

你会怎么办?你建议使用iloc吗?

python slice dataframe pandas

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

使用条件打印数据框中的特定行

请注意,我是在函数中执行此操作的,并且我已经提到了一个非常好的线程。

这是python函数,传递的参数是从用户那里获取的

def recommend(uid):
    ds = pd.read_csv("pred_matrix-full_ubcf.csv")
    records = ds.loc[ds['uid'] == uid]
    for recom in records:
        print recom
Run Code Online (Sandbox Code Playgroud)

数据格式:

uid iid     rat
344 1189    5
344 1500    5
344 814     5
736 217     3.3242361285
736 405     3.3238380154
736 866     3.323500531
331 1680    2
331 1665    2
331 36      1.999918585
Run Code Online (Sandbox Code Playgroud)

参考: this1 , this2

无法找到我出错的地方,我正在关注this1线程,但无法得到它。

python dataframe pandas

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

Pandas:选择两列不同的行

假设我有一个如下数据帧

a  b  c  
1  1  45
0  2  74
2  2  54
1  4  44
Run Code Online (Sandbox Code Playgroud)

现在我想要列a和b不相同的行.所以预期的输出是

a  b  c 
0  2  74
1  4  44
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python pandas

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

Pandas Dataframe,更简单的语法可以按值的条件删除行

考虑一个 Pandas 数据框,例如:

df = pd.DataFrame([[0,2],[1,0],[7,99]],index=[3,4,8], columns = ["R1","R2"])
Run Code Online (Sandbox Code Playgroud)

给予:

   R1  R2
3   0   2
4   1   0
8   7  99
Run Code Online (Sandbox Code Playgroud)

当我想通过某个值的条件删除一行时,我要么使用

df = df.drop(df[df["R1"] == 1].index)
Run Code Online (Sandbox Code Playgroud)

或者

df = df.drop(df.index[np.where(df["R1"] == 1)[0]])
Run Code Online (Sandbox Code Playgroud)

或者

df = df.drop(df.loc[df['R1'] == 1].index)
Run Code Online (Sandbox Code Playgroud)

两个都超级麻烦。您知道实现此目的的更简单的语法吗?

例如,如果有类似 idrop 函数的东西,第二个选项会更易读:

df = df.idrop(np.where(df["R1"] == 1)[0])
Run Code Online (Sandbox Code Playgroud)

编辑:

我原以为这比df = df[df['R1'] != 1]仅仅删除一行的性能要低。(庞大的数据库...)

python performance filtering dataframe pandas

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

如果行包含 Pandas 中的特定值,则删除列

我开始学习熊猫。我在这里看到了很多问题,人们问如果列匹配特定值,如何删除行。

就我而言,情况正好相反。想象一下有这个数据框:

数据框

您想知道的是,如果任何列在其任何一行中有 value salty,则应删除该列,结果是:

数据框 2

我已经尝试过与此有几个相似之处:

if df.loc[df['A'] == 'salty']:
   df.drop(df.columns[0], axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)

但是我在查找有关如何根据该列的行值删除列的文档方面非常迷茫。该代码是查找特定列并始终删除第一列的组合(因为我的想法是在for循环中的所有列中搜索该列中一行的值。

python dataframe pandas

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

根据 pandas 列中值的最后一个字符从 DataFrame 中选择行

我想从 A 列中最后一个单词为“oo”的列中选择行,我该如何执行此操作。

我浏览了链接:-根据 pandas 列中的值从 DataFrame 中选择行

我尝试过的:-

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo baroo foos bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
#      A      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

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

Python Pandas:根据条件选择行

我有一个以下格式的 pandas DataFrame:

df.head()

        y   y_pred
599     0   0
787     9   9
47      2   2
1237    1   1
1069    6   6
Run Code Online (Sandbox Code Playgroud)

我想找到行/索引号 - 其中 y != y_pred。

我正在努力做到这一点,Select但无法做到。请帮忙。

TIA

python pandas

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

使用 pandas 仅显示 Excel writer 输出中的筛选行

我想在 Excel 输出中仅显示筛选后的行。下面是例子,

df = pd.DataFrame({'Data': [1, 2, 3, 4, 
                               5, 6, 7]}) 

writer = pd.ExcelWriter('pandasEx.xlsx',  
                   engine ='xlsxwriter') 

df.to_excel(writer, sheet_name ='Sheet1') 
writer.save() 
Run Code Online (Sandbox Code Playgroud)

对于输出,我想隐藏'Data' < 5. 这个怎么做?相当于应用过滤器并保存Excel。

我知道如何删除 pandas 中的重复项或过滤 pandas 中的内容。但我不想在 pandas 中删除它们,我只想在 Excel 中应用过滤器。用例是用户将在 Excel 中拥有完整的数据,但某些行将被隐藏,如果用户愿意,他们可以在 Excel 中取消隐藏它们并查看数据。希望这能解释用例

谢谢

python pandas

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

清洁基于多个条件创建列的方法

我的问题很简单 - 我有下表:

+----------+-------+------------+--------+
| industry | class | occupation | value  |
+----------+-------+------------+--------+
|      170 |     4 |       1000 |  123.3 |
|      180 |     7 |       3600 | 4543.8 |
|      570 |     5 |        990 |  657.4 |
+----------+-------+------------+--------+
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为"type"的新列.此列的值基于这些多个条件

  • 等级= 7:QWE
  • 等级= 8:ASD
  • Class = 1或2:ZXC
  • Class = 4,5或6 AND Industry = 170-490或570-690 AND Occupation> = 1000:IOP
  • 等级= 4,5或6和行业= 170-490或570-690并且占用10-3540之间:JKL
  • 其他:BNM

结果表将如下所示:

+----------+-------+------------+--------+------+
| industry | class | occupation | value  | type |
+----------+-------+------------+--------+------+
| …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

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

仅选择具有“True”pandas DataFrame 的行

我必须做,也许是一件简单的事情,但我完全不知道该怎么做。我有一些代码:

data = df_new.assign(result=df_new['text'].isin(df_oryginal['text']).astype(str))
df_same = pd.DataFrame(data)

Run Code Online (Sandbox Code Playgroud)

输出是:

                                                     text  name          index  result
0                                               some text  filename        0    False
1                                               some text  filename        1    True
2                                               some text  filename        2    False
3                                               some text  filename        3    False
4                                               some text  filename        4    True
...                                                  ...          ...    ...    ...
36213                                           some text  filename    36213    False
36214                                           some text  filename    36214    False
36215                                           some text  filename    36215    True
Run Code Online (Sandbox Code Playgroud)

现在我只想选择 df_same['result'] == True 的这些行,但我不知道如何。我已经查遍了谷歌...请帮助我,提前感谢您的回答:)

python boolean dataframe pandas

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

根据值数组过滤数据帧

我有一个数组(名称df)和数据框(名称data)。

数组由唯一的 id 组成,例如df=array([10,11,12])。

Dataframe 由 3 列组成:data、id、value。

我想以这样的方式过滤数据帧,它应该只包含数组中指定的 id

python arrays dataframe pandas

0
推荐指数
1
解决办法
4408
查看次数

标签 统计

pandas ×11

python ×11

dataframe ×7

arrays ×1

boolean ×1

filtering ×1

numpy ×1

performance ×1

python-3.x ×1

slice ×1