Python 在列中融化不均匀数据并使用pandas忽略NAN
一定有一种优雅的方法可以做到这一点,但我还没有找到。我有一个大数据框,看起来像这样:Python 在列中融化不均匀数据并使用pandas忽略NAN,python,pandas,dataframe,melt,Python,Pandas,Dataframe,Melt,一定有一种优雅的方法可以做到这一点,但我还没有找到。我有一个大数据框,看起来像这样: df Name 0 1 2 3 4 1 apple 2016 W1 NaN NaN NaN NaN 2 orange 2016 W1 2017 W2 NaN NaN NaN 3 banana 2016 W2 2017 W3
df
Name 0 1 2 3 4
1 apple 2016 W1 NaN NaN NaN NaN
2 orange 2016 W1 2017 W2 NaN NaN NaN
3 banana 2016 W2 2017 W3 NaN NaN NaN
4 pear 2016 W3 2016 W4 2016 W5 NaN NaN
6 melon 2016 W2 2016 W4 2017 W5 2017 W6 2017 W7
df_result
Name week
apple 2016 W1
orange 2016 W1
orange 2017 W2
banana 2016 W2
banana 2017 W3
pear 2016 W3
pear 2016 W4
... etc.
我想融合数据,这样只有两列name
和week
。所以结果应该是这样的:
df
Name 0 1 2 3 4
1 apple 2016 W1 NaN NaN NaN NaN
2 orange 2016 W1 2017 W2 NaN NaN NaN
3 banana 2016 W2 2017 W3 NaN NaN NaN
4 pear 2016 W3 2016 W4 2016 W5 NaN NaN
6 melon 2016 W2 2016 W4 2017 W5 2017 W6 2017 W7
df_result
Name week
apple 2016 W1
orange 2016 W1
orange 2017 W2
banana 2016 W2
banana 2017 W3
pear 2016 W3
pear 2016 W4
... etc.
我坚持的是如何忽略NaN值,同时确保不丢失任何值
当我做pd.melt(df,id_vars=['Name'])时,我不确定结果是否是我想要的 使用堆栈
df.set_index('Name').stack().reset_index(1,drop = True)
Name
apple 2016 W1
orange 2016 W1
orange 2017 W2
banana 2016 W2
banana 2017 W3
pear 2016 W3
pear 2016 W4
pear 2016 W5
melon 2016 W2
melon 2016 W4
melon 2017 W5
melon 2017 W6
melon 2017 W7
dtype: object
或者使用熔体进行清洗
df.melt(id_vars='Name').sort_values('Name').dropna()
使用堆栈
df.set_index('Name').stack().reset_index(1,drop = True)
Name
apple 2016 W1
orange 2016 W1
orange 2017 W2
banana 2016 W2
banana 2017 W3
pear 2016 W3
pear 2016 W4
pear 2016 W5
melon 2016 W2
melon 2016 W4
melon 2017 W5
melon 2017 W6
melon 2017 W7
dtype: object
或者使用熔体进行清洗
df.melt(id_vars='Name').sort_values('Name').dropna()
Op1
凤凰社2
凤凰社3
Op1
凤凰社2
凤凰社3
我喜欢Op1best@JAG2024YW~(-),BTW:考虑速度,OP3应该是FASTI样的OP1best@JAG2024YW~(-),BTW:考虑速度,OP3应该是快的