Python 获取列的名称并在dataframe中从中创建数据
我目前正在尝试根据同一数据帧的另一列[X]的名称生成新列[Y,Z]。问题是我无法获取列的名称并将其作为数据传递给新列 我正在尝试这样的事情:Python 获取列的名称并在dataframe中从中创建数据,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,我目前正在尝试根据同一数据帧的另一列[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
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
例如,dataframe的外观如下所示:
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_new=df_original.copy()
df_new.loc[:,'new_col']=df_new.columns[1]
根据编辑的帖子更新了答案:
例如:
>>> df
name example_col
0 shakir 33
1 rafiq 37
2 dev 36
3 suraj 30
解决方案:
您可以尝试使用set_index()
和rename
将新的默认值设置为列
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
或者-您可以尝试:
Gonza,如果你能举例说明你的数据帧的样子和你想要的输出,我会很高兴,这会在你的帖子上引起正确的注意。可能你在寻找什么东西
df['Y']=df.apply(lambda x:x['x'],axis=1)
?谢谢你的回答,克里斯,我正在查看你的评论,问题是我不需要反转列的数据,我只需要将列的名称分配给同一数据帧的新列,并对所有记录重复它的值。非常感谢你!Gonza能给你一个输入和输出的示例吗你的目标是什么?谢谢克里斯的帮助,是的,我刚刚用一个更清晰的例子修改了我的帖子。非常感谢!!非常感谢你的帮助!!!是的,就是这样,终于!!:)对不起,克里斯!!,我没有给你分数的级别,当我有分数时,他们正在等待;)非常感谢您的帮助和想法,我做出了改变,以便更好地解释自己!感谢是的,这是伟大的,因为它为我需要做的下一件事开辟了道路,非常感谢!!我再次感谢你,因为你告诉我的功能很棒!非常感谢你的朋友!!