本文介绍了Pandas Dataframe:将多列拆分为多列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这种格式的熊猫数据框.
I've a panda dataframe in this format.
Var1 Var2 Var2
A [2016-09-26, 2016-08-25, 2016-08-06] [u'1', u'5', u'4']
B [2016-09-26, 2016-08-25, 2016-08-06] [u'1', u'5', u'4']
我想将其转换为以下格式.
I want to convert it into the following format.
Var1 Var2 Var3
A 2016-09-26 1
A 2016-08-25 5
A 2016-08-06 4
B 2016-09-26 1
B 2016-08-25 5
B 2016-08-06 4
有人可以告诉我该怎么做吗?
Can anyone please tell me how to do it?
非常感谢!
推荐答案
如果列Var2
和Var3
中的值位于lists
中,则可以使用 numpy.repeat
,按 str.len
并按chain
嵌套lists
的平面值:
If values in columns Var2
and Var3
are in lists
, you can use numpy.repeat
for repeat values by legths by str.len
and flat values of nested lists
by chain
:
print (type(df.Var2.iat[0]))
<class 'list'>
print (type(df.Var3.iat[0]))
<class 'list'>
from itertools import chain
df1 = pd.DataFrame({
"Var1": np.repeat(df.Var1.values, df.Var2.str.len()),
"Var2": list(chain.from_iterable(df.Var2)),
"Var3": list(chain.from_iterable(df.Var3))})
print (df1)
Var1 Var2 Var3
0 A 2016-09-26 1
1 A 2016-08-25 5
2 A 2016-08-06 4
3 B 2016-09-26 1
4 B 2016-08-25 5
5 B 2016-08-06 4
这篇关于Pandas Dataframe:将多列拆分为多列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!