我目前正在尝试根据同一数据框的另一列[X]的名称生成新列[Y,Z]。问题是我无法获取列名并将其作为数据传递给新列。
我正在尝试这样的事情:
df['Y'] = df.assign(lambda c: df.columns.values['X'])
df['Z'] = df.apply(lambda c: df.columns.values['X'])
例如,数据框将如下所示:
>>> df_original
name example_col
0 shakir 33
1 rafiq 37
2 dev 36
3 suraj 30
>>> df_new
name new_col value
0 shakir example_col 33
1 rafiq example_col 37
2 dev example_col 36
3 suraj example_col 30
但是我离解决方案还差得很远,我已经尝试了各种方法... :(
请给我一个主意,我应该去哪里?
在此先感谢您的宝贵时间,我们将竭诚为您解答!
问候!
例:
>>> df
name example_col
0 shakir 33
1 rafiq 37
2 dev 36
3 suraj 30
您可以尝试使用set_index()
withstack
和rename
新的默认格式columns
level_1
&0
,如下所示:
>>> df.set_index('name').stack().reset_index().rename(columns={'level_1': 'new_col', 0:'value'})
name new_col value
0 shakir example_col 33
1 rafiq example_col 37
2 dev example_col 36
3 suraj example_col 30
或者-您可以尝试pd.melt
:
>>> pd.melt(df, id_vars=['name'], var_name='new_col')
name new_col value
0 shakir example_col 33
1 rafiq example_col 37
2 dev example_col 36
3 suraj example_col 30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句