Python 使用pandas dataframes,如何通读一列以查找;“真的”;语句,然后继续创建新的数据帧
下面我的数据框中有4列。我有兴趣浏览整个“大于50”专栏。在达到“True”标志后,我想获取相关的“Discharge”和“Resistance”值,以生成一个新的数据帧,其中只包含那些被发现为“True”的值 我希望新的dataframe看起来像这样: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
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”中要保留的任何列。我的道歉。你说得对。仅限“放电”和“电阻”列。