检查变量列并从匹配行中的另一列获取值
Check column for variable and get value from another column in matched row
如何通过匹配另一列中的属性来获取 csv 文件中一列的值?
CSV 文件看起来像这样:
One,Two,Three
x,car,5
x,bus,7
x,car,9
x,car,6
我只想获取第 3 列的值,前提是它们在第 2 列中的值为“car”。我也不希望添加它们,而是将它们打印在列表中,或者像这样:
5
9
6
我的方法看起来像那样,但实际上并不奏效:
import pandas as pd
df = pd.read_csv(r"example.csv")
ITEMS = [car] #I will need more items, this is just examplified
for item in df.Two:
if item in ITEMS:
print(df.Three)
如何获得匹配项的准确值?
在一行中你可以这样做:
print(df['Three'][df['Two']=='car'].values)
输出:
[5 9 6]
对于多个项目尝试:
df = pd.DataFrame({'One': ['x','x','x','x', 'x'],'Two': ['car','bus','car','car','jeep'],'Three': [5,7,9,6,10]})
myitems = ['car', 'bus']
res_list = []
for item in myitems:
res_list += df['Three'][df['Two']==item].values.tolist()
print(*sorted(res_list), sep='\n')
输出:
5
6
7
9
说明
df['Two']=='car'
returns 一个带有布尔值 True
的 Dataframe 在行位置 Two of df
中的值是汽车
.values
获取这些布尔值作为 numpy.ndarray
,结果将是 [True False True True]
- 我们可以像这样使用布尔值列表来过滤 Three 列中的值:
df['Three'][<Boolean_list>]
- 为了组合生成的数组,我们使用
tolist()
将每个 numpy.ndarray
转换为 python list
并将其附加到 res_list
- 然后我们用
sorted
排序res_list
如何通过匹配另一列中的属性来获取 csv 文件中一列的值?
CSV 文件看起来像这样:
One,Two,Three
x,car,5
x,bus,7
x,car,9
x,car,6
我只想获取第 3 列的值,前提是它们在第 2 列中的值为“car”。我也不希望添加它们,而是将它们打印在列表中,或者像这样:
5
9
6
我的方法看起来像那样,但实际上并不奏效:
import pandas as pd
df = pd.read_csv(r"example.csv")
ITEMS = [car] #I will need more items, this is just examplified
for item in df.Two:
if item in ITEMS:
print(df.Three)
如何获得匹配项的准确值?
在一行中你可以这样做:
print(df['Three'][df['Two']=='car'].values)
输出:
[5 9 6]
对于多个项目尝试:
df = pd.DataFrame({'One': ['x','x','x','x', 'x'],'Two': ['car','bus','car','car','jeep'],'Three': [5,7,9,6,10]})
myitems = ['car', 'bus']
res_list = []
for item in myitems:
res_list += df['Three'][df['Two']==item].values.tolist()
print(*sorted(res_list), sep='\n')
输出:
5
6
7
9
说明
df['Two']=='car'
returns 一个带有布尔值True
的 Dataframe 在行位置 Two ofdf
中的值是汽车.values
获取这些布尔值作为numpy.ndarray
,结果将是[True False True True]
- 我们可以像这样使用布尔值列表来过滤 Three 列中的值:
df['Three'][<Boolean_list>]
- 为了组合生成的数组,我们使用
tolist()
将每个numpy.ndarray
转换为 pythonlist
并将其附加到res_list
- 然后我们用
sorted
排序res_list