我有一个通过使用网站的请求 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
是我尝试用来检查随机键(或列)的方法
假设这样的输入:
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