Sheron
Sheron

Reputation: 615

Python dictionary to dataframe - DataFrame constructor not properly called

I used a dictionary containing source-destination as keys and messages as values. It loops over the first dataframe, for each question, store who posted 1st message as the destination, store who posted 2nd message as source, add a counter in dictionary at key 'source-destination'.

Now I am trying to convert dictionary to dataframe, but I get this error message ValueError: If using all scalar values, you must pass an index.

import pandas as pd
from itertools import permutations

df = pd.read_csv('example.csv', sep=';', engine='python')

messages = {}  # the dictionary where results is going to be stored
student= set()
destination = False  # a simple boolean to make sure message 2 follows message 1

for row in df:  # iterate over the dataframe
    student.add(row[2])  # collect students' name
    if row[1] == 1:  # if it is an initial message
        destination = row[2]  # we store students as destination
    elif row[1] == 2 and destination:  # if this is a second message
        source = row[2]  # store student as source
        key = source + "-" + destination  # construct a key based on source/destination
        if key not in messages:  # if the key is new to dictionary
            messages[key] = 1  # create the new entry
        else:  # otherwise
            messages[key] += 1  # add a counter to the existing entry
        destination = False  # reset destination

    else:
        destination = False  # reset destination

# add the pairs of source-destination who didn't interact in the dictionnary
for pair in permutations(student, 2):
    if "-".join(pair) not in messages:
        messages["-".join(pair)] = 0

 f1 = pd.DataFrame.from_dict(messages)
 print(f1)

Any idea why?

Thank you in advance.

Upvotes: 1

Views: 2148

Answers (1)

Sushii
Sushii

Reputation: 63

May be you have a mix between tab and space in your code. Try to remove all the tabs and replace them with spaces.

Same problem : IndentationError: unindent does not match any outer indentation level

Upvotes: 1

Related Questions