说我有这个数据框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函数,传递的参数是从用户那里获取的
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线程,但无法得到它。
假设我有一个如下数据帧
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)
我怎样才能做到这一点?
考虑一个 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]仅仅删除一行的性能要低。(庞大的数据库...)
我开始学习熊猫。我在这里看到了很多问题,人们问如果列匹配特定值,如何删除行。
就我而言,情况正好相反。想象一下有这个数据框:
您想知道的是,如果任何列在其任何一行中有 value salty,则应删除该列,结果是:
我已经尝试过与此有几个相似之处:
if df.loc[df['A'] == 'salty']:
df.drop(df.columns[0], axis=1, inplace=True)
Run Code Online (Sandbox Code Playgroud)
但是我在查找有关如何根据该列的行值删除列的文档方面非常迷茫。该代码是查找特定列并始终删除第一列的组合(因为我的想法是在for循环中的所有列中搜索该列中一行的值。
我想从 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) 我有一个以下格式的 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
我想在 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 中取消隐藏它们并查看数据。希望这能解释用例
谢谢
我的问题很简单 - 我有下表:
+----------+-------+------------+--------+
| 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"的新列.此列的值基于这些多个条件
结果表将如下所示:
+----------+-------+------------+--------+------+
| industry | class | occupation | value | type |
+----------+-------+------------+--------+------+
| …Run Code Online (Sandbox Code Playgroud) 我必须做,也许是一件简单的事情,但我完全不知道该怎么做。我有一些代码:
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 的这些行,但我不知道如何。我已经查遍了谷歌...请帮助我,提前感谢您的回答:)
我有一个数组(名称df)和数据框(名称data)。
数组由唯一的 id 组成,例如df=array([10,11,12])。
Dataframe 由 3 列组成:data、id、value。
我想以这样的方式过滤数据帧,它应该只包含数组中指定的 id
pandas ×11
python ×11
dataframe ×7
arrays ×1
boolean ×1
filtering ×1
numpy ×1
performance ×1
python-3.x ×1
slice ×1