如何分解多个列表,每个列表具有随机长度且列具有随机键名称?

问题描述 投票:0回答:1

我有一个通过使用网站的请求 api 随机生成的带有随机标头的 Dataframe。我试图同时用随机键名称分解多个具有随机长度的列表,这样我就可以没有任何间隙地删除重复值。

之前:

Random Key 1   Random Key 2   Random Key 3   Random Key 4   Random Key 5
list1          list2          list3          list4          list5

预期结果:

Random Key 1   Random Key 2   Random Key 3   Random Key 4   Random Key 5
string1.1      string2.1      string3.1      string4.1      string5.1
string1.2      string2.2      string3.2      string4.2      string5.2
string1.3      string2.3      string3.3      string4.3      
string1.4      string2.4                     string4.4      
               string2.5                     string4.5      
               string2.6                     string4.6      
                                             string4.7      

我对使用 Pandas Dataframes 的经验很少,但到目前为止这是我的代码。

userList = pd.DataFrame.from_dict(data=user, orient="index")
userList = pd.DataFrame.transpose(userList)
allQuarters = list(set(allQuarters))


for quarters in allQuarters:
  userList = userList.explode(quarters)

  for headers in userList:
    userList.loc[userList[headers].duplicated(), headers] = ""

userList
是随机密钥和未知长度的随机列表的完整随机字典。
allQuarters
是我尝试用来检查随机键(或列)的方法

python pandas dataframe
1个回答
0
投票

假设这样的输入:

df = pd.DataFrame({'Random Key 1': [['string1.1', 'string1.2', 'string1.3', 'string1.4']],
                   'Random Key 2': [['string2.1', 'string2.2', 'string2.3', 'string2.4', 'string2.5', 'string2.6']],
                   'Random Key 3': [['string3.1', 'string3.2', 'string3.3']],
                   'Random Key 4': [['string4.1', 'string4.2', 'string4.3', 'string4.4', 'string4.5', 'string4.6', 'string4.7']],
                   'Random Key 5': [['string5.1', 'string5.2']]})

您可以将

explode
ignore_index=True
一起使用,每列都带有
apply

df.apply(lambda x: x.explode(ignore_index=True))

输出:

  Random Key 1 Random Key 2 Random Key 3 Random Key 4 Random Key 5
0    string1.1    string2.1    string3.1    string4.1    string5.1
1    string1.2    string2.2    string3.2    string4.2    string5.2
2    string1.3    string2.3    string3.3    string4.3          NaN
3    string1.4    string2.4          NaN    string4.4          NaN
4          NaN    string2.5          NaN    string4.5          NaN
5          NaN    string2.6          NaN    string4.6          NaN
6          NaN          NaN          NaN    string4.7          NaN
© www.soinside.com 2019 - 2024. All rights reserved.