It would be easy if Column B has fixed four values for 'fruit', 'code', 'quantity', and 'date'.
However, the number of values are not fixed here, which makes hard to solve.
I assume that there are three patterns as you exampled and solve the problem, as follows:
import pandas as pd
df = pd.DataFrame({
    'Column A': [12, 10, 5],
    'Column B': ['("apple",123,"six",03-10-2020)', '("banana","two")', '("mango",156,02-10-2020)']
})
fruits = []
codes = []
quantities = []
dates = []
for i, row in df.iterrows():
    values = row['Column B'][1:-1].split(',')
    if len(values) == 1:
        fruit, code, quantity, date = values[0], None, None, None
    elif len(values) == 2:
        fruit, code, quantity, date = values[0], None, values[1], None
    elif len(values) == 3:
        fruit, code, quantity, date = values[0], values[1], None, values[2]
    elif len(values) == 4:
        fruit, code, quantity, date = values[0], values[1], values[2], values[3]
    else:
        pass
    fruits.append(fruit)
    codes.append(code)
    quantities.append(quantity)
    dates.append(date)
df['fruit'] = pd.Series(fruits)
df['codes'] = pd.Series(codes)
df['quantities'] = pd.Series(quantities)
df['dates'] = pd.Series(dates)
del df['Column B']
print(df)
#   Column A     fruit codes quantities       dates
#0        12   "apple"   123      "six"  03-10-2020
#1        10  "banana"  None      "two"        None
#2         5   "mango"   156       None  02-10-2020
I assums that if Column B has three values, it would be 'fruit', 'code', and 'date' (for example, "mango",156,02-10-2020), not 'fruit', 'quantity', and 'date'.
You might want to modify my code if your pattern is more varied.