我一直在寻找在dfA(DataFrame(的每一行中删除NaN的方法,然后将每一行移动到push1_start_date下,并重新连接到push1_start_date的末尾。有可能做到吗??我尝试了stack((和unstack((方法,但都不起作用。谢谢。
push1_start_date push2_start_date push3_start_date push4_start_date push5_start_date push6_start_date push7_start_date push8_start_date
2021-04-29 3 NaN NaN NaN NaN NaN NaN NaN
2021-04-30 20 NaN NaN NaN NaN NaN NaN NaN
2021-05-01 24 NaN NaN NaN NaN NaN NaN NaN
2021-05-02 21 NaN NaN NaN NaN NaN NaN NaN
2021-05-03 14 NaN NaN NaN NaN NaN NaN NaN
2021-05-04 5 NaN NaN NaN NaN NaN NaN NaN
2021-05-05 14 NaN NaN NaN NaN NaN NaN NaN
2021-05-06 16 NaN NaN NaN NaN NaN NaN NaN
2021-05-07 17 NaN NaN NaN NaN NaN NaN NaN
2021-05-08 14 NaN NaN NaN NaN NaN NaN NaN
2021-05-11 78 NaN NaN NaN NaN NaN NaN NaN
2021-05-12 20 78.0 NaN NaN NaN NaN NaN NaN
2021-05-13 13 21.0 NaN NaN NaN NaN NaN NaN
2021-05-14 8 12.0 NaN NaN NaN NaN NaN NaN
2021-05-15 18 8.0 NaN NaN NaN NaN NaN NaN
2021-05-16 16 19.0 NaN NaN NaN NaN NaN NaN
2021-05-17 16 16.0 NaN NaN NaN NaN NaN NaN
2021-05-18 18 15.0 NaN NaN NaN NaN NaN NaN
2021-05-19 14 19.0 NaN NaN 1.0 2.0 NaN NaN
2021-05-20 13 14.0 1.0 NaN 1.0 1.0 NaN NaN
2021-05-21 11 13.0 NaN NaN 1.0 NaN 1.0 NaN
2021-05-22 26 10.0 NaN 2.0 NaN 1.0 NaN NaN
2021-05-23 12 27.0 NaN 1.0 NaN NaN NaN NaN
2021-05-24 15 12.0 1.0 3.0 NaN 1.0 NaN NaN
2021-05-25 9 16.0 NaN 1.0 NaN 1.0 NaN NaN
2021-05-26 14 9.0 NaN 1.0 NaN NaN NaN NaN
2021-05-27 14 12.0 NaN NaN NaN NaN NaN NaN
2021-05-28 21 16.0 NaN NaN NaN NaN NaN NaN
2021-05-29 23 20.0 1.0 2.0 1.0 1.0 NaN NaN
2021-05-30 18 23.0 1.0 NaN 1.0 1.0 NaN NaN
2021-05-31 19 17.0 NaN 3.0 1.0 3.0 NaN NaN
2021-06-01 15 21.0 NaN 3.0 1.0 1.0 NaN NaN
2021-06-02 22 13.0 1.0 2.0 NaN 1.0 NaN NaN
2021-06-03 19 23.0 1.0 NaN NaN 1.0 NaN NaN
2021-06-04 12 20.0 2.0 NaN 2.0 NaN NaN NaN
2021-06-05 2 1.0 NaN NaN NaN 1.0 NaN NaN
ideal output
push1_start_date
2021-04-29 3 ←The begging of push1_start_date
2021-06-05 2 ←The last of push1_start_date
2021-05-12 78 ←The begging of push2_start_date
2021-06-05 1.0 ←The last of push2_start_date
2021-05-20 1.0 ←The begging of push2_start_date
2021-06-04 2.0 ←The last of push2_start_date
it comtines untill push8_start_date
您可以尝试使用reset_index()
、melt()
、dropna()
和drop()
:
out=(df.reset_index()
.melt('index',value_name='push_start_date')
.dropna(subset=['push_start_date'])
.drop('variable',1))
或
通过concat()
和to_frame()
:
out=(pd.concat([df[x].dropna() for x in df.columns[df.dtypes!='object']])
.to_frame('push_start_date'))
您可以使用df.melt()
将右侧的所有列堆叠为1列,然后只保留value
列而不保留null值:
df.melt().drop('variable', axis=1).dropna()
输出
value
2021-04-29 3
... ...
2021-06-05 2
2021-05-12 78
... ...
2021-06-05 1.0
2021-05-20 1.0
... ...
2021-06-04 2.0
... ...