如何根据pandas中某些列中的值从DataFrame中选择行?
在SQL中我会使用:
SELECT *
FROM table
WHERE colume_name = some_value
Run Code Online (Sandbox Code Playgroud)
我试着看看熊猫文档,但没有立即找到答案.
我在Python中有一个命令行程序需要一段时间才能完成.我想知道完成跑步所需的确切时间.
我看过这个timeit模块,但它似乎只适用于小代码片段.我想要整个计划的时间.
我有一个pandas DataFrame,我想删除它中的行,其中特定列中的字符串长度大于2.我知道我可以df.dropna()用来摆脱包含any的行NaN,但我没有看到如何基于条件表达式删除行.
这个问题的答案似乎与我想要的非常接近 - 似乎我应该能够做到这样的事情:
df[(len(df['column name']) < 2)]
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
KeyError: u'no item named False'
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?
这是一个自我回答的QnA,旨在指导用户应用的缺陷和好处.
我已经看到很多关于Stack Overflow问题的答案涉及使用apply.我也看到用户评论他们说" apply很慢",应该避免".
我已经阅读了很多关于性能主题的文章,解释apply很慢.我还在文档中看到了一个关于如何apply简单地传递UDF的便利函数的免责声明(现在似乎无法找到).因此,普遍的共识是,apply如果可能,应该避免.但是,这引发了以下问题:
apply是如此糟糕,那为什么它在API中呢?apply- 免费?apply是不错的(比其他可能的解决方案更好)?我目前有一个由1和0作为值的列组成的数据帧,我想迭代列并删除仅由0组成的列.这是我到目前为止所尝试的:
ones = []
zeros = []
for year in years:
for i in range(0,599):
if year[str(i)].values.any() == 1:
ones.append(i)
if year[str(i)].values.all() == 0:
zeros.append(i)
for j in ones:
if j in zeros:
zeros.remove(j)
for q in zeros:
del year[str(q)]
Run Code Online (Sandbox Code Playgroud)
在哪些年份是我正在分析的不同年份的数据框列表,其中包含列中包含一个的列,而零是包含全零的列的列表.有没有更好的方法根据条件删除列?出于某种原因,我必须检查那些列是否也在零列表中,并从零列表中删除它们以获得所有零列的列表.
在pandas库中很多次都有一个选项来更改对象,例如使用以下语句...
df.dropna(axis='index', how='all', inplace=True)
Run Code Online (Sandbox Code Playgroud)
我很好奇返回的内容以及inplace=True传递对象时的处理方式inplace=False.
正在修改的所有操作self时inplace=True?什么时候inplace=False立即创建一个新对象new_df = self,然后new_df返回?
我查看了数据框列中的唯一值 - 我拥有的pandas.并且在其中一个列中有一些我不想包含的名称,如何在不使用索引值表示法的情况下从数据框中删除这些行,而是说如果行值="this"则删除
喜欢...
new = df.copy
df['some column'].drop_values('this','that','other')
Run Code Online (Sandbox Code Playgroud) 我有一个 pandas 数据框,看起来像这样(但实际上要大得多):
a b c d e f g h i j
0| 0 1 2 3 4 -500 -500 5 6 7
1| 2 3 4 5 6 -500 -500 6 5 4
2|-500 -500 -500 -500 -500 -500 -500 -500 -500 -500
3| 3 4 5 2 1 -500 -500 5 3 6
Run Code Online (Sandbox Code Playgroud)
我只想删除包含 -500 (2) 的整行和整列(f 和 g)。我的数据框是自动生成的,我还不知道哪些列和行包含-500。
有人知道如何做到这一点吗?
谢谢!
我已经阅读了这个帖子中的答案,但它没有回答我的确切问题.我的DataFrame看起来像这样
Lady in the Water The Night Listener Just My Luck Correlation
Claudia Puig NaN 4.5 3.0 0.893405
Gene Seymour 3.0 3.0 1.5 0.381246
Jack Matthews 3.0 3.0 NaN 0.662849
Lisa Rose 2.5 3.0 3.0 0.991241
Michael Phillips 2.5 4.0 NaN -1.000000
Mick LaSalle 3.0 3.0 2.0 0.924473
Run Code Online (Sandbox Code Playgroud)
我想删除Michael Phillips的行,因为他的相关值低于零.至于说,我尝试了不同的组合df = df[df.Correlation]和df = df.drop(),但找不到任何工作.