【问题标题】:In two lists, How do I get the values of the second list based on the first list value?在两个列表中,如何根据第一个列表值获取第二个列表的值?
【发布时间】:2020-04-08 01:08:38
【问题描述】:

我有 2 两个我压缩的列表。如何获取 file1 value_85 的值。该文件可以有许多相同的名称。我只需要 fileXXX 的前两个值。第一个值的范围为 80-90,第二个值的范围为 0-10。之后会有符合此标准的值,但我只需要前两个。我正在考虑将列表转换为输出所示的数据框。

the lists:
[file1,value_u,
file1,value_u,
file1,value_85, ##want this value
file1,value_3, ##want this value
file1,value_10,
file1,value_88,
file2,value_u,
file2,value_88, ##want this value
file2,value_2, ##want this value
file2,value_88,
file2,value_0,
file3,value_89, ##want this value
file3,value_2, ##want this value
file3,value_4]

output:
df or list: 
2   file1   value_85
3   file1   value_3
7   file2   value_88
8   file2   value_2
11  file3   value_89
12  file3   value_2

【问题讨论】:

  • 数据的类型是什么?
  • 这是一个DataFrame还是一个列表?如果是前者,你读过 Pandas 文档吗?无论如何,这是非常不清楚的。
  • @U10-Forward-ReinstateMonica 两个附加列表的压缩列表
  • @s_col 我不确定如何更清楚地表达它。 请试试? 列表的第二部分value-85的值什么列表value_85?什么是file1?据我所知,你之前没有提到过这些,那么我们怎么知道它们是什么?
  • 另外你说只有前两个值,我只需要前两个,但是你的输出包含6行,每个范围3行? !

标签: python list dataframe for-loop iterator


【解决方案1】:

您可以先通过Series.str.contains 和\d$ 过滤最后一个字符中带有数字的行 - $ 是带有boolean indexing 的字符串结尾,然后使用GroupBy.head:

print (df)
        A         B
0   file1   value_u
1   file1   value_u
2   file1  value_85
3   file1   value_3
4   file1  value_10
5   file1  value_88
6   file2   value_u
7   file2  value_88
8   file2   value_2
9   file2  value_88
10  file2   value_0
11  file3  value_89
12  file3   value_2
13  file3   value_4


df = df[df['B'].str.contains('\d$')].groupby('A').head(2)
print (df)
        A         B
2   file1  value_85
3   file1   value_3
7   file2  value_88
8   file2   value_2
11  file3  value_89
12  file3   value_2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-03
    • 2013-12-06
    • 2019-12-21
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多