python-用熊猫拆分DataFrame行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-用熊猫拆分DataFrame行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1594字,纯文字阅读大概需要3分钟。
内容图文
我目前正在尝试找出有效的方法,将单个panadas DataFrame行拆分为多个稍有变化的行.想象这样的结构:
A C1 C2 C3 C4
1 a b c a
2 b a e b a
3 g c
4 d e
我想以这样的结构结束:
A C
1 a b
2 a c
3 a a
4 b a
5 b e
6 b b
7 b a
8 g c
9 d e
10 d e
到目前为止,我一直在使用for循环并创建类似的字典(df是我的DataFrame):
rows = []
for i, r in df.iterrows():
tmp = r[1:].dropna()
for c in tmp.values:
dict = {'A': r[0], 'C': c}
rows.append(dict)
不幸的是,这种方法非常慢.到目前为止,在与熊猫一起工作后,我发现仅使用它可以大大缩短执行时间,但是我没有太多的经验来弄清楚如何使这种情况更快.
有人可以建议,怎样做才能加快速度?
解决方法:
尝试这个:
In [10]: pd.melt(df, id_vars='A', value_vars=['C1','C2','C3','C4'])
Out[10]:
A variable value
0 a C1 b
1 b C1 a
2 g C1 c
3 d C1 e
4 a C2 c
5 b C2 e
6 g C2 NaN
7 d C2 NaN
8 a C3 a
9 b C3 b
10 g C3 NaN
11 d C3 NaN
12 a C4 NaN
13 b C4 a
14 g C4 NaN
15 d C4 NaN
如果您想摆脱NaN:
In [15]: pd.melt(df, id_vars='A', value_vars=['C1','C2','C3','C4'], value_name='C')[['A','C']].dropna()
Out[15]:
A C
0 a b
1 b a
2 g c
3 d e
4 a c
5 b e
8 a a
9 b b
13 b a
相同,但动态选择C *列:
In [21]: (pd.melt(df, id_vars='A',
....: value_vars=df.filter(like='C').columns.tolist(),
....: value_name='C')[['A','C']]
....: .dropna()
....: )
Out[21]:
A C
0 a b
1 b a
2 g c
3 d e
4 a c
5 b e
8 a a
9 b b
13 b a
内容总结
以上是互联网集市为您收集整理的python-用熊猫拆分DataFrame行全部内容,希望文章能够帮你解决python-用熊猫拆分DataFrame行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。