Python 3.x 从同一列向列添加值
我有这样一个数据框:Python 3.x 从同一列向列添加值,python-3.x,pandas,Python 3.x,Pandas,我有这样一个数据框: Row Author Cit_Handle Year Title Handle 1 Carlos Hi 2017 how to be ReP:55:er45 2 Boris Sla 2018 what it it? ReP:ef5:ag4g 3 Dante Ur 2017 is it true? ReP:f
Row Author Cit_Handle Year Title Handle
1 Carlos Hi 2017 how to be ReP:55:er45
2 Boris Sla 2018 what it it? ReP:ef5:ag4g
3 Dante Ur 2017 is it true? ReP:f9gj:sfona9:2039
4 ReP:fb9:d93
5 Jure Les 2016 ¡it is true! ReP:odjva:ejewojaef:advon
6 Mark Cas 2018 How do ReP:apnvb:qt42rwb:203
7 ReP:gjh:59f
Row Author Cit_Handle Year Title Handle
1 Carlos Hi ReP:fb9:d93 2017 how to be ReP:55:er45
2 Boris Sla ReP:fb9:d93 2018 what it it? ReP:ef5:ag4g
3 Dante Ur ReP:fb9:d93 2017 is it true? ReP:f9gj:sfona9:2039
4 Jure Les ReP:gjh:59f 2016 ¡it is true! ReP:odjva:ejewojaef:advon
5 Mark Cas ReP:gjh:59f 2018 How do ReP:apnvb:qt42rwb:203
我想从上面的行粘贴每个Cit\u句柄
值,直到找到另一个Cit\u句柄
值或列名,如下所示:
Row Author Cit_Handle Year Title Handle
1 Carlos Hi 2017 how to be ReP:55:er45
2 Boris Sla 2018 what it it? ReP:ef5:ag4g
3 Dante Ur 2017 is it true? ReP:f9gj:sfona9:2039
4 ReP:fb9:d93
5 Jure Les 2016 ¡it is true! ReP:odjva:ejewojaef:advon
6 Mark Cas 2018 How do ReP:apnvb:qt42rwb:203
7 ReP:gjh:59f
Row Author Cit_Handle Year Title Handle
1 Carlos Hi ReP:fb9:d93 2017 how to be ReP:55:er45
2 Boris Sla ReP:fb9:d93 2018 what it it? ReP:ef5:ag4g
3 Dante Ur ReP:fb9:d93 2017 is it true? ReP:f9gj:sfona9:2039
4 Jure Les ReP:gjh:59f 2016 ¡it is true! ReP:odjva:ejewojaef:advon
5 Mark Cas ReP:gjh:59f 2018 How do ReP:apnvb:qt42rwb:203
如果你想看到真实数据的样本,你可以看到它
知道我该怎么做吗?您描述的输出可以通过在
Cit\u Handle
上进行回填来实现&随后删除任何其他字段为空的行
[5]:中行上的代码完成所有处理
In [1]: import pandas as pd
In [2]: text ="""Author,Cit_Handle,Year,Title,Handle
...: Carlos Hi,,2017,how to be,ReP:55:er45
...: Boris Sla,,2018,what it it?,ReP:ef5:ag4g
...: Dante Ur,,2017,is it true?,ReP:f9gj:sfona9:2039
...: ,ReP:fb9:d93,,,
...: Jure Les,,2016,¡it is true!,ReP:odjva:ejewojaef:advon
...: Mark Cas,,2018,How do,ReP:apnvb:qt42rwb:203
...: ,ReP:gjh:59f,,,"""
In [3]: from io import StringIO
In [4]: df = pd.read_csv(StringIO(text),sep=',')
In [5]: df.fillna(method='bfill')[df.Author.notnull()]
Out[5]:
Author Cit_Handle Year Title Handle
0 Carlos Hi ReP:fb9:d93 2017.0 how to be ReP:55:er45
1 Boris Sla ReP:fb9:d93 2018.0 what it it? ReP:ef5:ag4g
2 Dante Ur ReP:fb9:d93 2017.0 is it true? ReP:f9gj:sfona9:2039
4 Jure Les ReP:gjh:59f 2016.0 ¡it is true! ReP:odjva:ejewojaef:advon
5 Mark Cas ReP:gjh:59f 2018.0 How do ReP:apnvb:qt42rwb:203
一个小提示:pandas中的int
类型不能包含NaN
s,因此在此过程中,Year
列上移到float
ReP:fb9:d93与Dante Ur在同一行上,还是在其他所有列都为空的单独一行上?@Allen它在不同的行上,就像你在问题中看到的那样。