gpt4 book ai didi

python - 使用 Pandas (UNPIVOT)将表格更改为高格式

转载 作者:太空狗 更新时间:2023-10-30 00:31:15 25 4
gpt4 key购买 nike

我有一张这样的 table

   user         company company2 company3 company4
1 Mac Lenovo Hp null
2 Mac MSI Sony

我希望使用 pandas

     user    company
1 Mac
1 Lenovo
1 Hp
2 Mac

等等我在这里尝试过,但没有使用 pandas pivot。

dataframe = pd.read_csv('data.csv')
dataframe.fillna(value='', inplace=True)
#dataframe.pivot(index='user', columns='company')

以上代码不工作并给出错误。

最佳答案

你可以使用pd.melt方法:

In [211]: pd.melt(df, id_vars='user', value_vars=df.columns.drop('user').tolist())
Out[211]:
user variable value
0 1 company Mac
1 2 company Mac
2 1 company2 Lenovo
3 2 company2 MSI
4 1 company3 Hp
5 2 company3 Sony
6 1 company4 null
7 2 company4 NaN

In [213]: pd.melt(df,
id_vars='user', value_vars=df.columns.drop('user').tolist(),
value_name='Company') \
.drop('variable',1)
Out[213]:
user Company
0 1 Mac
1 2 Mac
2 1 Lenovo
3 2 MSI
4 1 Hp
5 2 Sony
6 1 null
7 2 NaN

更新:删除 NaN 并按用户对生成的 DF 进行排序:

In [218]: pd.melt(df,
...: id_vars='user', value_vars=df.columns.drop('user').tolist(),
...: value_name='Company') \
...: .drop('variable',1) \
...: .dropna() \
...: .sort_values('user')
...:
Out[218]:
user Company
0 1 Mac
2 1 Lenovo
4 1 Hp
6 1 null
1 2 Mac
3 2 MSI
5 2 Sony

PS 如果你想摆脱 null 值 - 使用 df.replace('null', np.nan) 而不是 df:

In [219]: pd.melt(df.replace('null', np.nan),
...: id_vars='user', value_vars=df.columns.drop('user').tolist(),
...: value_name='Company') \
...: .drop('variable',1) \
...: .dropna() \
...: .sort_values('user')
...:
Out[219]:
user Company
0 1 Mac
2 1 Lenovo
4 1 Hp
1 2 Mac
3 2 MSI
5 2 Sony

关于python - 使用 Pandas (UNPIVOT)将表格更改为高格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417796/

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