【发布时间】:2018-09-24 15:02:25
【问题描述】:
我有一个数据框df:
0 1 2
Mon ['x','y','z'] ['a','b','c'] ['a','b','c']
Tue ['a','b','c'] ['a','b','c'] ['x','y','z']
Wed ['a','b','c'] ['a','b','c'] ['a','b','c']
列表彼此之间都存在差异(也许也相似),我希望将其转换为形式:
0 1 2
Mon x a a
Mon y b b
Mon z c c
Tue a a x
Tue b b y
Tue c c z
Wed a a a
Wed b b b
Wed c c c
参考之前的一些 SO 问题,Explode lists with different lengths in Pandas, Split (explode) pandas dataframe string entry to separate rows
我尝试使用他们的解决方案,但无法获得所需的输出。我怎样才能做到这一点?
s1 = df[0]
s2 = df[1]
s3 = df[2]
i1 = np.arange(len(df)).repeat(s1.str.len())
i2 = np.arange(len(df)).repeat(s2.str.len())
i3 = np.arange(len(df)).repeat(s3.str.len())
df.iloc[i1, :-1].assign(**{'Shared Codes': np.concatenate(s1.values)})
df.iloc[i2, :-1].assign(**{'Shared Codes': np.concatenate(s2.values)})
df.iloc[i3, :-1].assign(**{'Shared Codes': np.concatenate(s3.values)})
另外,如果我有更多的专栏,这似乎不是一个非常合理的方法。使用 python 2.7。
【问题讨论】:
标签: python python-2.7 pandas numpy dataframe