Превращение его в json / dict
Хорошо, вероятно, не самое эффективное решение, но оно работает:
import pandas as pd
# Recreating the dataframe
df = pd.DataFrame({'Folders':["aa; bb;", "cc", "dd; ee; ff;"], 'Files':['aa.src aa.xml ; bb.src bb.war ;', 'cc.pom cc.py cc.js ;', 'dd.ts dd.js ; ee.py ; ff.xml ff.js ;']})
#Split df according to ; and removing leading ;
df = df.apply(lambda x: x.str.rstrip(';').str.split(';'))
print(df)
Итак, теперь ваш фрейм данных выглядит так :
Folders Files
0 [aa, bb] [aa.src aa.xml , bb.src bb.war ]
1 [cc] [cc.pom cc.py cc.js ]
2 [dd, ee, ff] [dd.ts dd.js , ee.py , ff.xml ff.js ]
Затем я l oop через фрейм данных, чтобы построить dict:
# Creating the dict by looping through the dataframe and number of elements of folders
df_dict=dict()
for index, row in df.iterrows():
for i, key in enumerate(row['Folders']):
df_dict[key.strip()] = row['Files'][i].strip().split(' ')
print(df_dict)
И вот результат:
{'aa': ['aa.src', 'aa.xml'], 'bb': ['bb.src', 'bb.war'], 'cc'
: ['cc.pom', 'cc.py', 'cc.js'], 'dd': ['dd.ts', 'dd.js'], 'ee
': ['ee.py'], 'ff': ['ff.xml', 'ff.js']}
Если вы может встретить дважды один и тот же ключ, я предлагаю использовать эту версию кода, которая проверяет, существует ли уже ключ:
import pandas as pd
# Recreating the dataframe
df = pd.DataFrame({'Folders':["aa; bb;", "cc", "dd; ee; ff;", 'aa'], 'Files':['aa.src aa.xml ; bb.src bb.war ;', 'cc.pom cc.py cc.js ;', 'dd.ts dd.js ; ee.py ; ff.xml ff.js ;', 'aa.tst']})
#Split df according to ; and removing leading ;
df = df.apply(lambda x: x.str.rstrip(';').str.split(';'))
print(df)
df_dict=dict()
for index, row in df.iterrows():
for i, key in enumerate(row['Folders']):
if key.strip() in df_dict:
df_dict[key.strip()] += row['Files'][i].strip().split(' ')
else: df_dict[key.strip()] = row['Files'][i].strip().split(' ')
print(df_dict)