例如,假设一个简单的数据框
A B
0 1 0.810743
1 2 0.595866
2 3 0.154888
3 4 0.472721
4 5 0.894525
5 6 0.978174
6 7 0.859449
7 8 0.541247
8 9 0.232302
9 10 0.276566
给定条件,如何检索行的索引值?例如: dfb = df[df['A']==5].index.values.astype(int)
return
[4]
,但是我想得到的只是just 4
。这在以后的代码中给我带来麻烦。
基于某些条件,我想记录满足该条件的索引,然后在它们之间选择行。
我试过了
dfb = df[df['A']==5].index.values.astype(int)
dfbb = df[df['A']==8].index.values.astype(int)
df.loc[dfb:dfbb,'B']
获得所需的输出
A B
4 5 0.894525
5 6 0.978174
6 7 0.859449
但我明白了 TypeError: '[4]' is an invalid key
添加起来更容易[0]
-使用一个元素选择list的第一个值:
dfb = df[df['A']==5].index.values.astype(int)[0]
dfbb = df[df['A']==8].index.values.astype(int)[0]
dfb = int(df[df['A']==5].index[0])
dfbb = int(df[df['A']==8].index[0])
但是,如果某些值不匹配,则会出现错误,因为第一个值不存在。
解决方案是使用next
与iter
用于获取缺省parameetr如果没有匹配的值:
dfb = next(iter(df[df['A']==5].index), 'no match')
print (dfb)
4
dfb = next(iter(df[df['A']==50].index), 'no match')
print (dfb)
no match
然后似乎需要减去1
:
print (df.loc[dfb:dfbb-1,'B'])
4 0.894525
5 0.978174
6 0.859449
Name: B, dtype: float64
boolean indexing
或的另一种解决方案query
:
print (df[(df['A'] >= 5) & (df['A'] < 8)])
A B
4 5 0.894525
5 6 0.978174
6 7 0.859449
print (df.loc[(df['A'] >= 5) & (df['A'] < 8), 'B'])
4 0.894525
5 0.978174
6 0.859449
Name: B, dtype: float64
print (df.query('A >= 5 and A < 8'))
A B
4 5 0.894525
5 6 0.978174
6 7 0.859449
我有两个形状相同的python数据帧,例如: 我想使用df2中的值作为行索引来选择df1中的值,并创建一个形状相等的新数据帧。预期结果: 我已尝试使用.loc,它在单个列中运行良好: 但是我不能同时在所有列上使用. loc或. iloc。我想避免循环来优化性能,因为我正在处理一个大数据帧。有什么想法吗?
问题内容: 我有以下DataFrame: 如您所见,列用作索引。我想获取该行的序数,在这种情况下应该是。 被测试的列可以是索引列(在这种情况下也可以)或常规列,例如,我可能想找到满足条件的行的索引。 问题答案: 您可以这样使用np.where: 返回的值是一个数组,因为一列中可能有多个具有特定索引或值的行。
我有一个目录,其中.csv文件包含60分钟的股票数据条,还有一个Python脚本,用于将它们全部加载到熊猫数据框中,并在符号和日期时间上建立索引,如下所示; 第一次打印返回以下内容; 第二次打印返回以下内容:; 如何在数据帧中找到这一行的行索引,然后获得一个切片,该切片是由前一行、当前行和下一个10行组成的12行?
我有一个熊猫,如下所示: 我想按进行分组并获取每个组的第一行: 预期成果: 我尝试了下面的方法,它只给出了< code>DataFrame的第一行。任何关于这方面的帮助都将不胜感激。
假设是一个数据帧。 只接受名字 只接受整数(实际放置) 接受名称和整数: 当引用行时,只希望获得名称。例如 抛出一个错误,它不会返回“2”。 当引用列时,iloc更喜欢整数,而不是名称。例如 返回“三”,而不是2。(尽管返回)。 奇怪的是,我喜欢完全相反的功能。通常我的列名非常有意义,所以在我的代码中我直接引用它们。但是由于大量的观察清理,我的熊猫数据帧中的行名称通常不对应于。 我意识到我可以使用
问题内容: 我的问题与此非常相似,但是我需要转换整个数据框,而不仅仅是转换一系列数据框。该功能一次只能在一个系列上使用,不能很好地替代不推荐使用的命令。有没有办法获得与新熊猫版本中的命令相似的结果? 谢谢MikeMüller的示例。如果所有值都可以转换为整数,则效果很好。如果在我的数据帧中我有无法转换为整数的字符串怎么办?例: 然后,我可以运行不赞成使用的函数并获取: 运行命令会给我错误,即使尝试