如何解决将每隔一行移到新列并分组pandas python
通过使用iloc
和arg切片来构造一个新的df :
In [185]:
new_df = pd.DataFrame({'one':df['one'].iloc[::2].values, 'value':df['one'].iloc[1::2].values})
new_df
Out[185]:
one value
0 title1 R2G
1 title2 K5G
2 title2 R14G
3 title2 R2T
4 title3 K10C
5 title4 W7C
6 title4 R2G
7 title5 K8C
然后groupby
,您可以在“一个”上并lambda
在“值”列和仅join
值上应用一个:
In [188]:
new_df.groupby('one')['value'].apply(','.join).reset_index()
Out[188]:
one value
0 title1 R2G
1 title2 K5G,R14G,R2T
2 title3 K10C
3 title4 W7C,R2G
4 title5 K8C
解决方法
我有一个示例数据集,该数据集比我的实际数据集小得多,它实际上是一个文本文件,我想将其读取为pandas表并对其进行处理:
import pandas as pd
d = {
'one': ['title1','R2G','title2','K5G','R14G','R2T','title3','K10C','title4','W7C','title5','K8C']
}
df = pd.DataFrame(d)
示例数据集如下所示:
df
Out[20]:
one
0 title1
1 R2G
2 title2
3 K5G
4 title2
5 R14G
6 title2
7 R2T
8 title3
9 K10C
10 title4
11 W7C
12 title4
13 R2G
14 title5
15 K8C
我添加了第二列,称为“值”:
df.insert(1,'value','')
df
Out[22]:
one value
0 title1
1 R2G
2 title2
3 K5G
4 title2
5 R14G
6 title2
7 R2T
8 title3
9 K10C
10 title4
11 W7C
12 title4
13 R2G
14 title5
15 K8C
我想 首先 将其他所有行移至“值”列:
one value
0 title1 R2G
1 title2 K5G
2 title2 R14G
3 title2 R2T
4 title3 K10C
5 title4 W7C
6 title4 R2G
7 title5 K8C
我想 ,然后 按标题名称,因为有可能是相同的标题超过1点的值:
one value
0 title1 R2G
1 title2 K5G,R14G,R2T
2 title3 K10C
3 title4 W7C,R2G
4 title5 K8C
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。