Панды Создание Dataframe из словаря с массивом Numpy - PullRequest
0 голосов
/ 14 октября 2019

Я изучаю панд и бью стену, создавая фрейм данных из следующего ввода:

tracked = {
        'Created': (df1.count()['Created']),
        'Closed': (df1.count()['Closed']),
        'Owner': (df1['Owner'].value_counts().to_dict()),
        'Resolution': (df1['Resolution'].value_counts().to_dict()),
        'Severity': (df1['Severity'].value_counts().to_dict())
    }

, который создает:

pp.pprint(tracked)
{u'Closed': '11', #numpy
 u'Created': '42', #numpy
 u'Owner': {u'foo.bar': 3, #dict
            u'FooBar': 6,
            u'BarFoo': 30,
            u'bar.foo': 3},
 u'Resolution': {u'FalsePositive': 1, u'TruePositive': 10}, #dict
 u'Severity': {1: 7, 2: 31, 3: 4}} #dict

мой текущий фрейм данных

df4 = pd.DataFrame.from_dict({(i): tracked[i]
                                  for i in tracked.keys()},
                                 orient='index').transpose()

, который создает:

pp.pprint(df4)
                                               Owner                                  Resolution             Severity Closed Created
0  {u'foobar': 30, u'foo.bar': 3, u'bar.f...  {u'FalsePositive': 1, u'TruePositive': 10}  {1: 7, 2: 31, 3: 4}     11      42

мой желаемый вывод расширил бы значения для владельца, разрешения и серьезности над столбцами или строками.

Я пробовал ряд SO / Web-решений, включаяпытаясь сгладить диктат, который возвращает AttributeError: 'int' object has no attribute 'split'.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 14 октября 2019

Вам нужно только pd.DataFrame

dict1={u'Closed': '11', #numpy
 u'Created': '42', #numpy
 u'Owner': {u'foo.bar': 3, #dict
            u'FooBar': 6,
            u'BarFoo': 30,
            u'bar.foo': 3},
 u'Resolution': {u'FalsePositive': 1, u'TruePositive': 10}, #dict
 u'Severity': {1: 7, 2: 31, 3: 4}} #dict
print(dict1)

{'Closed': '11', 'Created': '42', 'Owner': {'foo.bar': 3, 'FooBar': 6, 'BarFoo': 30, 'bar.foo': 3}, 'Resolution': {'FalsePositive': 1, 'TruePositive': 10}, 'Severity': {1: 7, 2: 31, 3: 4}}

df=pd.DataFrame(dict1)
print(df)

              Closed Created  Owner  Resolution  Severity
foo.bar           11      42    3.0         NaN       NaN
FooBar            11      42    6.0         NaN       NaN
BarFoo            11      42   30.0         NaN       NaN
bar.foo           11      42    3.0         NaN       NaN
FalsePositive     11      42    NaN         1.0       NaN
TruePositive      11      42    NaN        10.0       NaN
1                 11      42    NaN         NaN       7.0
2                 11      42    NaN         NaN      31.0
3                 11      42    NaN         NaN       4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...