【问题标题】:How to extract rows of pandas dataframe as lists of lists based on a set of characters in a column?如何根据列中的一组字符将熊猫数据框的行提取为列表列表?
【发布时间】:2019-01-28 19:16:42
【问题描述】:

我有一个数据框,我想通过某些条件提取数据。
我的数据框是这样的:

 A  B   D
e1  r2  a
e8  r7  a
e2  r2  a..b
e5  e10 c
e8  e12 c..a

对于D (a, b, c) 列中的每个值,我想从AB 中获取值,如下所示:

a : [[e1, r2], [e8, r7], [e2,r2], [e8, e12]]
b : [[e2, r2]]
c : [[e5, e10], [e8, e12]]
....

这是我尝试过的,但我不知道如何提取列 AB

df
l = ['a','b','c']
list_elements = {}
for i in l:
    liste_e = []
        for e in df['d']:
        if i.upper() in e:
            liste_e.append([e1, r2])
        ## extract a : [[e1, r2], [e8, r7], [e2,r2], [e8, e12]]

        list_elements[i] = liste_e

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您还可以创建一个dict,将空列表作为值并附加到它

    l = ['a','b','c']
    dic = dict([(key, []) for key in l])
    for i in l:
        value = df.D.str.contains(i)
        dic[i].append(df.loc[value, ['A', 'B']].values)
    

    【讨论】:

      【解决方案2】:

      您可以使用.str.contains 获取每个预定义字母的布尔掩码,使用.loc 获取AB 列的对应部分,以及convert to list of lists 我们在前面获得的数据框的那些部分一步。

      您的数据框:

      >>> import pandas as pd
      >>> df = pd.DataFrame(dict(A=['e1', 'e8', 'e2', 'e5', 'e8'],
                                 B=['r2', 'r7', 'r2', 'e10', 'e12'],
                                 D=['a', 'a', 'a..b', 'c', 'c..a']))
      >>> df
           A  B   D
      0   e1  r2  a
      1   e8  r7  a
      2   e2  r2  a..b
      3   e5  e10 c
      4   e8  e12 c..a
      

      然后

      >>> letters = ['a', 'b', 'c']
      >>> lists = {}
      >>> for letter in letters:
              mask = df['D'].str.contains(letter)
              lists[letter] = df.loc[mask, ['A', 'B']].values.tolist()
      >>> lists
      {'a': [['e1', 'r2'], ['e8', 'r7'], ['e2', 'r2'], ['e8', 'e12']],
       'b': [['e2', 'r2']],
       'c': [['e5', 'e10'], ['e8', 'e12']]}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-09
        • 2017-08-02
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 2017-06-26
        相关资源
        最近更新 更多