Конвертировать несколько строк в фрейм данных в python - PullRequest
1 голос
/ 24 февраля 2020

Есть три строки, которые я хочу преобразовать.

 row='A;B;C'

 col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'

 val='99,80,90;100,100,100;90,90,90'

Я хочу преобразовать String в Dataframe или Matrix в Python.

   aaa  bbb   ccc   abc

A  99   80    90    NaN

B  100  100   NaN   100

C  90   90    90    NaN

Как преобразовать вышеуказанные строки или любые другие строки в Dataframe?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Как насчет:

def create_frame(row_str, col_str, val_str,
                 record_delim=';', field_delim=','):
    out = zip(row_str.split(record_delim),
              col_str.split(record_delim),
              val_str.split(record_delim))

    df = pd.DataFrame({i: dict(zip(c.split(field_delim),
                                   v.split(field_delim)))
                       for i, c, v in out})
    return df.T

# Example
row='A;B;C'
col='aaa,bbb,ccc;aaa,bbb,abc;aaa,bbb,ccc'
val='99,80,90;100,100,100;90,90,90'

df = create_frame(row, col, val)
print(df)

[out]

   aaa  bbb  ccc  abc
A   99   80   90  NaN
B  100  100  NaN  100
C   90   90   90  NaN
0 голосов
/ 24 февраля 2020

Это должно сработать с https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

У вас есть некоторые несовместимые разделители, которые я заменил на ,

row='A,B,C' 
col='aaa,bbb,ccc,aaa,bbb,abc,aaa,bbb,ccc' 
val='99,80,90,100,100,100,90,90,90'
buffer = ""
buffer += row + "\n" + col+ "\n"+val
pandas.read_csv(buffer)
...