создать панд из словаря, но в специальном формате - PullRequest
0 голосов
/ 13 апреля 2019

Предположим, у меня есть словарь d:

d = dict(A =[1,2], B=[1,2,3,4])
print d
{'A': [1, 2], 'B': [1, 2, 3, 4]}

Я хотел бы создать панд df с двумя столбцами, помеченными nodeid и rowid, которые выглядят так:

nodeid  rowid
A       1 
A       2 
B       1 
B       2 
B       3 
B       4

Все примеры, которые я обнаружил, которые создают dand для pandas из dict, дают ключ dict в качестве имени col, а затем в строках указывается, имел ли этот ключ конкретное значение, с NaN, если этот узел нене имеет этого значения.

Ответы [ 3 ]

4 голосов
/ 13 апреля 2019

Попробуйте:

df = pd.DataFrame([(k, v) for (k, l) in d.items() for v in l], 
              columns=['nodeid', 'rowid'])

и это дает:

    nodeid  rowid
0   A   1
1   A   2
2   B   1
3   B   2
4   B   3
5   B   4
2 голосов
/ 13 апреля 2019

Попробуйте это:

df = pd.DataFrame([[k,d[k][i]] for k in d for i in range(len(d[k]))], columns= ['nodeid', 'rowid'])

ВЫХОД :

  nodeid  rowid
0      A      1
1      A      2
2      B      1
3      B      2
4      B      3
5      B      4
0 голосов
/ 13 апреля 2019

В одну сторону

pd.Series(d).apply(pd.Series).stack().reset_index(level=0).\
    rename(columns={'level_0':'nodeid',0:'rowid'})
  nodeid  rowid
0      A    1.0
1      A    2.0
0      B    1.0
1      B    2.0
2      B    3.0
3      B    4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...