获取列的名称并在dataframe中从中创建数据

2024-05-23 15:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试根据同一数据帧的另一列[X]的名称生成新列[Y,Z]。问题是我无法获取列的名称并将其作为数据传递给新列

我正在尝试这样的事情:

df['Y'] = df.assign(lambda c: df.columns.values['X'])
df['Z'] = df.apply(lambda c: df.columns.values['X'])

例如,dataframe的外观如下所示:

>>> 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

但我离解决方案还不太近,我已经尝试了各种方法…:(

请告诉我该去哪里

提前感谢您的时间,我会留意您的回答

问候


Tags: columns数据lambdanamedev名称dfnew
2条回答

根据编辑的帖子更新了答案:

例如:

>>> df
     name  example_col
0  shakir           33
1   rafiq           37
2     dev           36
3   suraj           30

解决方案:

您可以尝试将set_index()^{}rename一起使用新的默认值columns{}&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(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

假设您知道要复制其名称的列的索引,则:

df_new = df_original.copy()
df_new.loc[:, 'new_col'] = df_new.columns[1]

相关问题 更多 >