我已经阅读了与stackoverflow中可用的问题相关的所有答案,但是我的问题与可用的答案几乎没有什么不同。我有非常大的数据框,并且该数据框的某些部分在后面-
Input Dataframe is like
A B C D
0 foot 17/1: OGChan_2020011717711829281829281 , 7days ...
1 arm this will processed after ;;;
2 leg go_2020011625692400374400374 16/1: Id Imerys_2020011618188744093744093
3 head xyziemen_2020011510691787006787006 en_2020011510749462801462801 ;;;
: : : :
在此数据帧中,我首先基于一些正则表达式从B列中提取ID。 B列的某些行可能包含该ID,B列的某些行可能不包含ID,B列的某些行可能包含空白。以下是代码-
df = pd.read_excel("Book1.xlsx", "Sheet1")
dict= {}
for i in df.index:
j = str(df['B'][i])
if(re.findall('_\d{25}', j)):
a = re.findall('_\d{25}', j)
print(a)
dict[i] = a
正则表达式以_(下划线)和25位数字开头。上面df中的示例是_2020011618188744093744093,_2020011510749462801462801等。
现在,我想在特定行的D列中插入这些ID。例如,如果在第0行找到两个ID,则第一个ID应该插入D列的第0行,第二个ID应该插入D列的第一行,并且数据帧的所有内容都应向下移动。我想要的内容将从下面的输出中清除。基于上面的输入,我希望我的输出如下。
A B .. D
0 foot 17/1: OGChan_2020011717711829281829281 ,7days _2020011717711829281829281
1 arm this will processed after
2 leg go_2020011625692400374400374 16/1: _2020011625692400374400374
Id Imerys_2020011618188744093744093
3 _2020011618188744093744093
4 head xyziemen_2020011510691787006787006 _2020011510691787006787006
en_2020011510749462801462801
5 _2020011510749462801462801
: : : :
在上面的输出中,在第0行找到了1个ID,因此第0行的D列包含了该ID。在第一个索引中找不到ID。因此,第一个索引的D列为空。在第二个索引处,有两个ID。因此,第一ID位于D列的第二行,第二ID位于D列的第三行,并且将第三行的先前内容移至第四行。我希望上面的输出作为我的最终输出。
希望我很清楚。预先感谢