:空シリーズオブジェクトを構築します。
import numpy as np
import pandas as pd
df = pd.DataFrame({'item':['item1', 'item2', 'item3', 'item4', 'item5'],
'value':['', '', [('f1', 10), ('f3', 5)], [('f4', 2)], [('f5', 1)]]})
# ACTUAL DATA
data = [{'fcols': i[0], 'value': i[1], 'item': row['item']}
for ix, row in df.iterrows() if len(row['value']) > 0 for i in row['value']]
newdf = pd.DataFrame(data).pivot_table(index='item', values='value', columns='fcols').reset_index()
# NON-DATA
fcols = [i[0] for f in df['value'].tolist() if len(f) > 0 for i in f]
nondata = [{'value': np.nan, 'item': row['item'], 'fcols':f}
for ix, row in df.iterrows() if row['value'] == '' for f in fcols]
nondf = pd.DataFrame(nondata).pivot_table(index='item', values='value', columns='fcols').reset_index()
# COMBINED DF
newdf = pd.concat([nondf,newdf]).rename_axis(None, axis=1).reset_index(drop=True)
print(newdf)
# item f1 f3 f4 f5
# 0 item1 NaN NaN NaN NaN
# 1 item2 NaN NaN NaN NaN
# 2 item3 10.0 5.0 NaN NaN
# 3 item4 NaN NaN 2.0 NaN
# 4 item5 NaN NaN NaN 1.0
OPは、より一般的なソリューションを必要とする場合があります。これは
f
種類の任意の数との組み合わせのために、より一般化してもよいです。単純な投稿よりも多くの価値と商品があるかもしれません。 – Parfait@パルファットそれはそうです。私はOPが明確になるのを待つつもりです。 – Psidom
真、それ以上の値があります。私の元のポストのものは単なるおもちゃの例です。 – learner