gpt4 book ai didi

python - python中从宽到长的数据操作示例

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:50 25 4
gpt4 key购买 nike

我刚刚提出了一个类似的问题 here并得到了答案,但认识到,通过向 DataFrame 添加一个新列,所提出的解决方案失败了,因为问题有点不同。

我想从这里开始:

import pandas as pd

df = pd.DataFrame({'ID': [1, 2],
'Value_2013': [100, 200],
'Value_2014': [245, 300],
'Value_2016': [200, float('NaN')]})

print(df)

ID Value_2013 Value_2014 Value_2016
0 1 100 245 200.0
1 2 200 300 NaN

到:

df_new = pd.DataFrame({'ID': [1, 1, 1, 2, 2],
'Year': [2013, 2014, 2016, 2013, 2014],
'Value': [100, 245, 200, 200, 300]})

print(df_new)

ID Value Year
0 1 100 2013
1 1 245 2014
2 1 200 2016
3 2 200 2013
4 2 300 2014

我有什么想法可以应对这个挑战吗?

最佳答案

pandas.melt()方法让你走到一半。之后只是一些小的清理工作。

df = pd.melt(df, id_vars='ID', var_name='Year', value_name='Value')
df['Year'] = df['Year'].map(lambda x: x.split('_')[1])
df = df.dropna().astype(int).sort_values(['ID', 'Year']).reset_index(drop=True)
df = df.reindex_axis(['ID', 'Value', 'Year'], axis=1)

print(df)
ID Value Year
0 1 100 2013
1 1 245 2014
2 1 200 2016
3 2 200 2013
4 2 300 2014

关于python - python中从宽到长的数据操作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com