Sarin Malcova
Sarin Malcova

Reputation: 103

How to convert a pandas DataFrame to YAML in python

import yaml
import pandas as pd

data = ['apple','car','smash','market','washing']
bata = ['natural','artificail','intelligence','outstanding','brain']

df = pd.DataFrame(zip(data,bata),columns=['Data','Bata'])

for columns in df:
    for list in df[columns]:
        text = yaml.dump_all(list)
        print(text)

I used above code but I'm getting each letter printed. How to get good YAML format. Thank you.

Upvotes: 10

Views: 14513

Answers (2)

Grzesik
Grzesik

Reputation: 151

import yaml
import pandas as pd
data = ['apple','car','smash','market','washing']
bata = ['natural','artificail','intelligence','outstanding','brain']
df = pd.DataFrame(zip(data,bata),columns=['Data','Bata'])

text = yaml.dump(df.to_dict(orient='records'),default_flow_style=None)`

If you want save to file your df:

with open('test_df_to_yaml.yaml', 'w') as file:
    documents = yaml.dump({'result': df.to_dict(orient='records')}, file, default_flow_style=False)

If you open after saving as DataFrame:

with open('test_df_to_yaml.yaml', mode="rt", encoding="utf-8") as test_df_to_yaml:
    df_merged = pd.DataFrame(yaml.full_load(test_df_to_yaml)['result'])

Upvotes: 5

think-maths
think-maths

Reputation: 967

You can use yaml.dump to get text in yaml format

>>> import yaml
>>> import pandas as pd
>>> data = ['apple','car','smash','market','washing']
>>> bata = ['natural','artificail','intelligence','outstanding','brain']
>>> df = pd.DataFrame(zip(data,bata),columns=['Data','Bata'])
>>> text = yaml.dump(
    df.reset_index().to_dict(orient='records'),
    sort_keys=False, width=72, indent=4,
    default_flow_style=None)
>>> text
'- {index: 0, Data: apple, Bata: natural}\n- {index: 1, Data: car, Bata: artificail}\n- {index: 2, Data: smash, Bata: intelligence}\n- {index: 3, Data: market, Bata: outstanding}\n- {index: 4, Data: washing, Bata: brain}\n'

Upvotes: 7

Related Questions