Python 使用pandas dataframes,如何通读一列以查找;“真的”;语句,然后继续创建新的数据帧

Python 使用pandas dataframes,如何通读一列以查找;“真的”;语句,然后继续创建新的数据帧,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,下面我的数据框中有4列。我有兴趣浏览整个“大于50”专栏。在达到“True”标志后,我想获取相关的“Discharge”和“Resistance”值,以生成一个新的数据帧,其中只包含那些被发现为“True”的值 我希望新的dataframe看起来像这样: Discharge Resistance ------------------------------ 0.005 76.373 0.037 100.114

下面我的数据框中有4列。我有兴趣浏览整个“大于50”专栏。在达到“True”标志后,我想获取相关的“Discharge”和“Resistance”值,以生成一个新的数据帧,其中只包含那些被发现为“True”的值

我希望新的dataframe看起来像这样:

Discharge          Resistance  
------------------------------
0.005              76.373 
0.037             100.114          
...                   ...           

我就是这样测试的:

'''
time    Discharge   Resistance  Greater_than_50
0   0.000   NaN NaN
1   0.005   76.373  True
2   0.010   -48.174 False
3   0.016   -37.012 False
4   0.021   -27.808 False
5   0.026   -24.674 False
6   0.031   -20.464 False
7   0.037   100.114 True
'''

import pandas as pd

df = pd.read_clipboard()

print(df)
原始df:

   time  Discharge  Resistance Greater_than_50
0     0      0.000         NaN             NaN
1     1      0.005      76.373            True
2     2      0.010     -48.174           False
3     3      0.016     -37.012           False
4     4      0.021     -27.808           False
5     5      0.026     -24.674           False
6     6      0.031     -20.464           False
7     7      0.037     100.114            True

输出:

   Discharge  Resistance
1      0.005      76.373
7      0.037     100.114
只需替换“col_mask”中要保留的任何列

我就是这样测试的:

'''
time    Discharge   Resistance  Greater_than_50
0   0.000   NaN NaN
1   0.005   76.373  True
2   0.010   -48.174 False
3   0.016   -37.012 False
4   0.021   -27.808 False
5   0.026   -24.674 False
6   0.031   -20.464 False
7   0.037   100.114 True
'''

import pandas as pd

df = pd.read_clipboard()

print(df)
原始df:

   time  Discharge  Resistance Greater_than_50
0     0      0.000         NaN             NaN
1     1      0.005      76.373            True
2     2      0.010     -48.174           False
3     3      0.016     -37.012           False
4     4      0.021     -27.808           False
5     5      0.026     -24.674           False
6     6      0.031     -20.464           False
7     7      0.037     100.114            True

输出:

   Discharge  Resistance
1      0.005      76.373
7      0.037     100.114

只需替换“col_mask”中要保留的任何列。

假设列“Discharge”和“Resistance”的位置为1和2,则您需要的是df2

df1 = df[df.Greater_than_50 == True]
df2 = df1.iloc[:, 1:3]
你可以这样做一个班轮

df2 = df[df.Greater_than_50 == True].iloc[:, 1:3]

假设“放电”和“电阻”列的位置分别为1和2,
df2
就是您所需要的

df1 = df[df.Greater_than_50 == True]
df2 = df1.iloc[:, 1:3]
你可以这样做一个班轮

df2 = df[df.Greater_than_50 == True].iloc[:, 1:3]

我试图运行此程序,但出现了以下错误:KeyError:“没有[Index(['Discharge','Resistance',dtype='object')]在[Index]中。”我想这是索引的问题,我已经更新了我的答案,使用iloc而不是loc,让我知道它现在是否工作。这修复了索引问题,但没有返回我期望的结果。无论如何,谢谢你。我试图运行这个,但我得到了一个错误:KeyError:“[Index(['Discharge','Resistance'],dtype='object')]中没有一个在[Index]中。”我想这是索引的问题,我已经更新了我的答案,使用iloc而不是loc,让我知道它现在是否有效。这修复了索引问题,但是没有返回我期望的结果。谢谢你,先生。你的建议似乎奏效了。您建议我如何删除额外的列。我希望新的数据框只显示“放电”和“大于50”列。更新了我的答案,删除了其他列。如果您的意思是仅显示“放电”和“电阻”列或“放电”和“大于50”列,请替换“col_mask”中要保留的任何列。我的道歉。你说得对。只有“释放”和“抵抗”栏。谢谢你,先生。你的建议似乎奏效了。您建议我如何删除额外的列。我希望新的数据框只显示“放电”和“大于50”列。更新了我的答案,删除了其他列。如果您的意思是仅显示“放电”和“电阻”列或“放电”和“大于50”列,请替换“col_mask”中要保留的任何列。我的道歉。你说得对。仅限“放电”和“电阻”列。