python dataframe:在应用lambda中返回列名称

时间:2018-10-02 17:01:33

标签: python pandas dataframe indexing lambda

我想使用 apply(applymap)和lambda 函数来获取 dfx 中每个元素的列名strong>(一个数据框)。 lambda 函数用于将另一个数据帧映射到 dfx ,之后将对其进行重写。

dfx

             A     B    C
2011-01-10   123   12   123 
2011-01-10   12    32   312
2011-01-11   44    1    30.99   

伪代码

output = dfx.apply(lambda r:r.column)

我不知道如何写“ r:r.column”这一部分

预期输出

             A    B    C
2011-01-10   A    B    C 
2011-01-10   A    B    C
2011-01-11   A    B    C  

任何帮助都倍受欢迎!非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以通过pd.DataFrame.iloc进行分配:

df.iloc[:] = df.columns

print(df)

            A  B  C
2011-01-10  A  B  C
2011-01-10  A  B  C
2011-01-11  A  B  C

答案 1 :(得分:0)

当您apply使用该函数时,该函数将与行相对应的Series作为参数。您可以通过将kwarg axis=1传递到apply来将其更改为一列。 Series没有列(轴1),只有索引(轴0)。相反,您可以使用原始的DataFrame:

dfx.apply(lambda s: dfx.columns, axis=1)

返回

            A  B  C
2011-01-10  A  B  C
2011-01-10  A  B  C
2011-01-11  A  B  C

注意:当然,有更好的方法可以按照需要“不使用apply和lambda函数”。