0

I am using Python 3.9 and having a list of dictionaries as shown below

[{'open': 144.92, 'high': 146.0, 'low': 144.32, 'close': 145.17, 'volume': 291021, 'datetime': 1627470000000}, 
{'open': 145.17, 'high': 145.47, 'low': 144.85, 'close': 145.3, 'volume': 266893, 'datetime': 1627471800000}, 
{'open': 145.33, 'high': 146.02, 'low': 145.3, 'close': 145.97, 'volume': 556375, 'datetime': 1627473600000}, 
{'open': 145.99, 'high': 146.34, 'low': 145.2, 'close': 145.33, 'volume': 512022, 'datetime': 1627475400000}, 
{'open': 145.33, 'high': 146.7384, 'low': 144.83, 'close': 144.84, 'volume': 540004, 'datetime': 1627477200000}, 
{'open': 144.82, 'high': 144.86, 'low': 142.54, 'close': 144.5601, 'volume': 20325171, 'datetime': 1627479000000}, 
{'open': 144.57, 'high': 146.97, 'low': 144.415, 'close': 146.3799, 'volume': 12848765, 'datetime': 1627480800000}, 
{'open': 146.38, 'high': 146.7799, 'low': 145.63, 'close': 146.28, 'volume': 7244630, 'datetime': 1627482600000}, 
{'open': 146.28, 'high': 146.49, 'low': 145.3202, 'close': 145.34, 'volume': 4580062, 'datetime': 1627484400000}, 
{'open': 145.3301, 'high': 145.5211, 'low': 144.42, 'close': 144.755, 'volume': 6145821, 'datetime': 1627486200000}, {'open': 144.76, 'high': 145.37, 'low': 144.62, 'close': 145.32, 'volume': 4729617, 'datetime': 1627488000000}, {'open': 145.33, 'high': 145.44, 'low': 144.69, 'close': 144.895, 'volume': 3124750, 'datetime': 1627489800000}, {'open': 144.91, 'high': 145.0, 'low': 143.93, 'close': 144.2401, 'volume': 4115042, 'datetime': 1627491600000}, {'open': 144.245, 'high': 144.64, 'low': 143.88, 'close': 144.48, 'volume': 3503241, 'datetime': 1627493400000}, {'open': 144.4999, 'high': 145.3, 'low': 143.94, 'close': 145.0, 'volume': 5286753, 
'datetime': 1627495200000}, {'open': 145.0, 'high': 145.44, 'low': 144.4201, 'close': 145.025, 'volume': 4780785, 'datetime': 1627497000000}, {'open': 145.03, 'high': 145.5099, 'low': 144.91, 'close': 145.3867, 'volume': 4060544, 'datetime': 1627498800000}, {'open': 145.38, 'high': 145.49, 'low': 144.95, 'close': 144.98, 'volume': 
6092811, 'datetime': 1627500600000}, {'open': 144.98, 'high': 146.0, 'low': 144.89, 'close': 145.24, 'volume': 
3834177, 'datetime': 1627502400000}, {'open': 145.15, 'high': 145.355, 'low': 145.1, 'close': 145.2, 'volume': 
71058, 'datetime': 1627504200000}, {'open': 145.2, 'high': 145.26, 'low': 145.02, 'close': 145.18, 'volume': 38422, 'datetime': 1627506000000}, {'open': 145.16, 'high': 145.17, 'low': 144.98, 'close': 145.08, 'volume': 4225012, 'datetime': 1627507800000}, {'open': 145.1, 'high': 145.29, 'low': 145.08, 'close': 145.2, 'volume': 33933, 'datetime': 1627509600000}, {'open': 145.15, 'high': 145.19, 'low': 145.05, 'close': 145.07, 'volume': 13627, 'datetime': 1627511400000}, {'open': 145.08, 'high': 145.11, 'low': 145.0, 'close': 145.1, 'volume': 23427, 'datetime': 1627513200000}, {'open': 145.1099, 'high': 145.15, 'low': 145.05, 'close': 145.14, 'volume': 29768, 
'datetime': 1627515000000}, {'open': 145.14, 'high': 145.69, 'low': 144.98, 'close': 145.15, 'volume': 20484, 'datetime': 1627545600000}, {'open': 145.25, 'high': 145.25, 'low': 145.0, 'close': 145.0, 'volume': 4540, 'datetime': 1627547400000}, {'open': 145.0, 'high': 145.11, 'low': 144.94, 'close': 145.05, 'volume': 7048, 'datetime': 1627549200000}, {'open': 145.16, 'high': 145.38, 'low': 145.12, 'close': 145.23, 'volume': 4512, 'datetime': 1627551000000}, {'open': 145.21, 'high': 145.21, 'low': 144.98, 'close': 145.03, 'volume': 11383, 'datetime': 1627552800000}, {'open': 145.03, 'high': 145.03, 'low': 144.5, 'close': 144.8, 'volume': 12113, 'datetime': 1627554600000}, {'open': 144.79, 'high': 145.01, 'low': 144.73, 'close': 144.78, 'volume': 67798, 'datetime': 1627556400000}, {'open': 144.77, 'high': 145.17, 'low': 144.7, 'close': 145.17, 'volume': 45081, 'datetime': 1627558200000}, {'open': 145.13, 'high': 145.3, 'low': 144.618, 'close': 145.25, 'volume': 91947, 'datetime': 1627560000000}, {'open': 145.28, 'high': 145.46, 'low': 144.68, 'close': 144.83, 'volume': 231029, 'datetime': 1627561800000}, {'open': 144.84, 'high': 144.9, 'low': 144.65, 'close': 144.7, 'volume': 151520, 'datetime': 1627563600000}, {'open': 144.66, 'high': 146.55, 'low': 144.58, 'close': 146.2257, 'volume': 9705975, 'datetime': 1627565400000}, {'open': 146.22, 'high': 146.49, 'low': 145.61, 'close': 145.84, 'volume': 5554580, 'datetime': 1627567200000}, {'open': 145.85, 'high': 146.24, 'low': 145.74, 'close': 146.075, 'volume': 3906249, 'datetime': 1627569000000}, {'open': 146.075, 'high': 146.12, 'low': 145.53, 'close': 145.635, 'volume': 3761108, 'datetime': 1627570800000}, {'open': 145.64, 'high': 145.9309, 'low': 145.52, 'close': 145.76, 'volume': 2786752, 'datetime': 1627572600000}, {'open': 145.765, 'high': 146.07, 'low': 145.68, 'close': 145.87, 'volume': 2363562, 'datetime': 1627574400000}, {'open': 145.88, 'high': 145.995, 'low': 145.71, 'close': 145.95, 'volume': 1576635, 'datetime': 1627576200000}, {'open': 145.95, 'high': 146.17, 'low': 145.81, 'close': 145.95, 'volume': 2038744, 'datetime': 1627578000000}, {'open': 145.9575, 'high': 146.01, 'low': 145.68, 'close': 145.8015, 'volume': 1830985, 'datetime': 1627579800000}, {'open': 145.81, 'high': 146.01, 'low': 145.78, 'close': 145.9218, 'volume': 1634972, 'datetime': 1627581600000}, {'open': 145.925, 'high': 145.96, 'low': 145.76, 'close': 145.805, 'volume': 1639128, 'datetime': 1627583400000}, {'open': 145.8, 'high': 145.86, 'low': 145.645, 'close': 145.67, 'volume': 
2019118, 'datetime': 1627585200000}, {'open': 145.68, 'high': 145.76, 'low': 145.55, 'close': 145.62, 'volume': 4453160, 'datetime': 1627587000000}, {'open': 145.64, 'high': 145.64, 'low': 145.27, 'close': 145.37, 'volume': 4835221, 'datetime': 1627588800000}, {'open': 145.365, 'high': 145.37, 'low': 144.8, 'close': 144.83, 'volume': 262858, 'datetime': 1627590600000}, {'open': 144.83, 'high': 145.64, 'low': 144.71, 'close': 144.89, 'volume': 1450787, 'datetime': 1627592400000}, {'open': 144.85, 'high': 144.91, 'low': 144.6, 'close': 144.6, 'volume': 42937, 'datetime': 1627594200000}, {'open': 144.6, 'high': 145.25, 'low': 144.6, 'close': 144.97, 'volume': 93050, 'datetime': 1627596000000}, {'open': 144.87, 'high': 144.97, 'low': 144.72, 'close': 144.75, 'volume': 26314, 'datetime': 1627597800000}, {'open': 144.71, 'high': 144.76, 'low': 144.5, 'close': 144.51, 'volume': 36019, 'datetime': 1627599600000}, {'open': 144.51, 'high': 144.62, 'low': 144.33, 'close': 144.34, 'volume': 69291, 'datetime': 1627601400000}, {'open': 144.1, 'high': 144.7, 'low': 144.0, 'close': 144.22, 'volume': 23940, 'datetime': 1627632000000}, {'open': 144.17, 'high': 144.65, 'low': 144.11, 'close': 144.4, 'volume': 10618, 'datetime': 1627633800000}, {'open': 144.32, 'high': 144.32, 'low': 144.11, 'close': 144.21, 'volume': 12501, 'datetime': 1627635600000}, {'open': 144.28, 'high': 144.5, 'low': 144.1, 'close': 144.4, 'volume': 37650, 'datetime': 1627637400000}, {'open': 144.45, 'high': 144.74, 'low': 144.4, 'close': 144.61, 'volume': 14977, 'datetime': 1627639200000}, {'open': 144.61, 'high': 144.9, 'low': 144.61, 'close': 144.8, 'volume': 8335, 'datetime': 1627641000000}, {'open': 144.83, 'high': 144.93, 'low': 144.54, 'close': 144.62, 'volume': 57678, 'datetime': 1627642800000}, {'open': 144.57, 'high': 144.62, 'low': 144.33, 'close': 144.56, 'volume': 54191, 'datetime': 1627644600000}, {'open': 144.49, 'high': 145.276, 'low': 144.21, 'close': 144.44, 'volume': 106122, 'datetime': 1627646400000}, {'open': 144.44, 'high': 144.7, 'low': 144.25, 'close': 144.48, 'volume': 125959, 'datetime': 1627648200000}, {'open': 144.51, 'high': 144.55, 'low': 144.27, 'close': 144.43, 'volume': 254997, 'datetime': 1627650000000}, {'open': 144.43, 'high': 145.33, 'low': 144.11, 'close': 145.1, 'volume': 10068846, 'datetime': 1627651800000}, {'open': 145.12, 'high': 145.3, 'low': 144.525, 'close': 144.75, 'volume': 5392293, 'datetime': 1627653600000}, {'open': 144.75, 'high': 145.0, 'low': 144.55, 'close': 144.8, 'volume': 3552737, 'datetime': 1627655400000}, {'open': 144.79, 'high': 145.08, 'low': 144.665, 'close': 145.035, 'volume': 3207842, 'datetime': 1627657200000}, {'open': 145.03, 'high': 145.18, 'low': 144.83, 'close': 145.12, 'volume': 2375723, 'datetime': 
1627659000000}, {'open': 145.11, 'high': 145.32, 'low': 144.95, 'close': 145.2386, 'volume': 2487204, 'datetime': 1627660800000}, {'open': 145.24, 'high': 145.5, 'low': 145.14, 'close': 145.4776, 'volume': 2238518, 'datetime': 1627662600000}, {'open': 145.4793, 'high': 145.75, 'low': 145.35, 'close': 145.66, 'volume': 2243011, 'datetime': 1627664400000}, {'open': 145.66, 'high': 145.905, 'low': 145.655, 'close': 145.748, 'volume': 2332521, 
'datetime': 1627666200000}, {'open': 145.745, 'high': 146.29, 'low': 145.66, 'close': 146.185, 'volume': 3106803, 'datetime': 1627668000000}, {'open': 146.185, 'high': 146.32, 'low': 146.07, 'close': 146.21, 'volume': 2977918, 'datetime': 1627669800000}, {'open': 146.21, 'high': 146.33, 'low': 145.81, 'close': 145.935, 'volume': 3287927, 'datetime': 1627671600000}, {'open': 145.945, 'high': 146.16, 'low': 145.775, 'close': 145.86, 'volume': 6603546, 'datetime': 1627673400000}, {'open': 145.86, 'high': 145.95, 'low': 145.75, 'close': 145.85, 'volume': 7601826, 'datetime': 1627675200000}, {'open': 145.85, 'high': 145.93, 'low': 145.82, 'close': 145.86, 'volume': 2244658, 'datetime': 1627677000000}, {'open': 145.9128, 'high': 145.93, 'low': 145.5336, 'close': 145.87, 'volume': 14824, 'datetime': 1627678800000}, {'open': 145.87, 'high': 145.89, 'low': 145.82, 'close': 145.88, 'volume': 16206, 'datetime': 1627680600000}, {'open': 145.85, 'high': 145.88, 'low': 145.84, 'close': 145.86, 'volume': 5719, 'datetime': 1627682400000}, {'open': 145.86, 'high': 145.86, 'low': 145.81, 'close': 145.83, 'volume': 7050, 'datetime': 1627684200000}, {'open': 145.83, 'high': 145.88, 'low': 145.81, 'close': 145.88, 'volume': 10839, 'datetime': 1627686000000}, {'open': 145.85, 'high': 146.0, 'low': 145.85, 'close': 145.95, 'volume': 
29225, 'datetime': 1627687800000}]

I want to extract the open, high, low, close from all the dictionaries and make a CSV file having the same column names with their respective values from that. Is there any direct way to do so. Thanks in advance.

0

3 Answers 3

2

Use the pandas library to

  • load the list/dict into a DataFrame
  • filter the columns
  • save to a csv
import pandas as pd

values = [
    {'open': 144.92, 'high': 146.0, 'low': 144.32, 'close': 145.17, 'volume': 291021, 'datetime': 1627470000000},
    {'open': 145.17, 'high': 145.47, 'low': 144.85, 'close': 145.3, 'volume': 266893, 'datetime': 1627471800000},
    {'open': 145.33, 'high': 146.02, 'low': 145.3, 'close': 145.97, 'volume': 556375, 'datetime': 1627473600000},
    {'open': 145.99, 'high': 146.34, 'low': 145.2, 'close': 145.33, 'volume': 512022, 'datetime': 1627475400000},
    {'open': 145.33, 'high': 146.7384, 'low': 144.83, 'close': 144.84, 'volume': 540004, 'datetime': 1627477200000},
    {'open': 144.82, 'high': 144.86, 'low': 142.54, 'close': 144.5601, 'volume': 20325171, 'datetime': 1627479000000}, ]

df = pd.DataFrame(values)
df[['open', 'high', 'low', 'close']].to_csv("export.csv", index=False)

# export.csv
open,high,low,close
144.92,146.0,144.32,145.17
145.17,145.47,144.85,145.3
145.33,146.02,145.3,145.97
145.99,146.34,145.2,145.33
145.33,146.7384,144.83,144.84
144.82,144.86,142.54,144.5601
Sign up to request clarification or add additional context in comments.

Comments

2

Note that you don't need pandas for this. You can use the built-in csv module, and then you won't need to install anything but Python :)

Of course, pandas gets more useful the more you manipulate the dataframe.

import csv

data = [
    {
        "open": 145.83,
        "high": 145.88,
        "low": 145.81,
        "close": 145.88,
        "volume": 10839,
        "datetime": 1627686000000,
    },
    {
        "open": 145.85,
        "high": 146.0,
        "low": 145.85,
        "close": 145.95,
        "volume": 29225,
        "datetime": 1627687800000,
    },
]

columns_we_want = [
    {
        "open": d["open"],
        "high": d["high"],
        "low": d["low"],
        "close": d["close"],
    }
    for d in data
]

with open("prices.csv", "w", newline="") as csvfile:
    fieldnames = ("open", "high", "low", "close")
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(columns_we_want)

Comments

1

If you want to use pandas, create the dataframe out of list of dictionaries, then write the required columns to csv file.

import pandas as pd
df = pd.DataFrame(d)  # d is the list of dictionaries
df[['open',  'high', 'low', 'close']].to_csv('data.csv')

Or, you can just pass the column names to to_csv as df.to_csv('data.csv',columns=['open', 'high', 'low', 'close'])

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.