如何解决当列行值与条件匹配时,迭代数据框的Python方法
我想绘制一个密度图,需要从数据中提取两个值以用作坐标,而第三个值将是密度值。我有一个要读取的文本文件,当一个行/列的值与条件匹配时,我想保存该行的另外两个值。我有一种适用于其中一种条件的东西,但它可以将行值保存在嵌套列表中,我想知道是否还有一种更Python的方法来执行此操作,因为我认为以后绘制起来会更容易。
数据:
Accum EdgeThr NumberOfBlobs durationMin Vol Perom X Y
50 0 0 0.03 0 0 0 0
50 2 0 0.03 0 0 0 0
50 4 0 0.03 0 0 0 0
50 6 0 0.03 0 0 0 0
50 8 2 0.03 27.833133599054975 0.0 1032.0 928.0
50 10 2 0.03 27.833133599054975 0.0 1032.0 928.0
46 30 2 0.17 27.833133599054975 0.0 968.0 962.0
46 32 2 0.17 27.833133599054975 0.0 1028.0 1020.0
46 34 2 0.17 27.833133599054975 0.0 978.0 1122.0
46 36 2 0.17 27.833133599054975 0.0 1000.0 1080.0
46 38 2 0.18 27.833133599054975 0.0 1010.0 1062.0
代码:
import pandas as pd
# load data as a pandas dataframe
df = pd.read_csv('dummy.txt',sep='\t',lineterminator='\r')
# to find the rows matching one condition ==2
blob2 = []
for index,row in df.iterrows():
temp = [row['Accum'],row['EdgeThr']]
if row['NumberOfBlobs']==2:
blob2.append(temp)
print(index,row['Accum'],row['EdgeThr'],row['NumberOfBlobs'])
print(blob2)
解决方法
proxychains <path to code>
将选择所有符合条件的行。
df[df['NumberOfBlobs'] == 2]
将选择这两列。
这里是一个例子:
df[df['NumberOfBlobs'] == 2][['Accum','EdgeThr']]
import pandas as pd
import numpy as np
N = 10
df = pd.DataFrame({'Accum': np.random.randint(40,50,N),'EdgeThr': np.random.randint(0,'NumberOfBlobs': np.random.randint(0,2,N) * 2})
blobs2 = df[df['NumberOfBlobs'] == 2][['Accum','EdgeThr']]
的示例:
df
Accum EdgeThr NumberOfBlobs
0 42 44 2
1 47 32 0
2 45 9 2
3 48 15 2
4 44 6 0
5 42 24 0
6 46 20 0
7 46 9 0
8 40 36 0
9 41 3 0
:
blobs2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。