我有一列中有列表的DataFrame,并希望将每个列表成员追加为新行。这里是一个例子:
import pandas as pd
df = pd.DataFrame({'a': ['fruit','vegetable'], 'b': [['orange', 'banana'], ['apple']]})
df
a b
0 fruit [orange, banana]
1 vegetable [carrot]
,结果应为:
a b
0 fruit [orange]
1 vegetable [carrot]
2 fruit [banana]
我知道如何使用循环(itertuples或iterrows)来做到这一点,但我想知道是否还有比这更多的pythonic方式:
for r in df[df['b'].str.len()>1].itertuples():
for item in r.b:
df = df.append({'a': r.a, 'b': [item]}, ignore_index=True)
df = df[df['b'].str.len()<2]