In the following code, I am trying to create some key-value pairs in a dictionary where the first element is a name and the second element is a dataframe.
# Creating a dictionary data = {'Value':[0,0,0]} kernel_df = pd.DataFrame(data, index=['M1','M2','M3']) dict = {'dummy':kernel_df} # dummy -> Value # M1 0 # M2 0 # M3 0 Then I read a file and create some batches and compare the name in the batch with the stored names in dictionary. If it doesn't exist, a new key-value (name and dataframe) is created. Otherwise, the Value column is appended to the existing dataframe. df = pd.read_csv('test.batch.csv') print(df) for i in range(0, len(df), 3): print("\n------BATCH BEGIN") batch_df = df.iloc[i:i+3] name = batch_df.loc[i].at["Name"] values = batch_df.loc[:,["Value"]] print(name) print(values) print("------BATCH END") if name in dict: # Append values to the existing key dict[name] = pd.concat( dict[name],values ) #### ERROR else: # Create a new pair in dictionary dict[name] = values; As you can see in the output, the join statement has error. ID Name Metric Value 0 0 K1 M1 10 1 0 K1 M2 5 2 0 K1 M3 10 3 1 K2 M1 20 4 1 K2 M2 10 5 1 K2 M3 15 6 2 K1 M1 2 7 2 K1 M2 2 8 2 K1 M3 2 ------BATCH BEGIN K1 Value 0 10 1 5 2 10 ------BATCH END ------BATCH BEGIN K2 Value 3 20 4 10 5 15 ------BATCH END ------BATCH BEGIN K1 Value 6 2 7 2 8 2 ------BATCH END As it reaches the contact() statement, I get this error: TypeError: first argument must be an iterable of pandas objects, you passed an object of type "DataFrame" Based on the definition I wrote in the beginning of the code, "dict[name]" should be a dataframe. Isn't that? How can I fix that? Regards, Mahmood -- https://mail.python.org/mailman/listinfo/python-list