Reputation: 615
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
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