如何将数据帧的列标题复制到每个行值?

时间:2019-05-03 18:57:41

标签: python pandas dataframe

我正在尝试转换pandas数据框,将一个函数应用于所有值,以连接列标题和实际值。

我的原始数据框是这样的:

|---------------------|------------------|
|         Col1        |        Col2      |
|---------------------|------------------|
|          12         |         34       |
|---------------------|------------------|
|          12         |         34       |

输出应为:

|---------------------|------------------|
|       Col1          |      Col2        |
|---------------------|------------------|
|       Col1_12       |      Col2_34     |
|---------------------|------------------|
|       Col1_12       |      Col2_34     |

我尝试过的是这个

mypandasdf.applymap(lambda x: 'columnname'+'_'+str(x))

但是我在为列名值挣扎。如何放置真实的列名而不是字符串? 还是有其他/更好的方法呢?

4 个答案:

答案 0 :(得分:3)

df = pd.DataFrame({'colA': [12,34], 'colB': [56,78]})

df = df.columns.values + '_' + df.astype(str)

print(df)

输出:

      colA     colB
0  colA_12  colB_56
1  colA_34  colB_78

答案 1 :(得分:2)

使用DataFrame.columns访问每一列并将其作为字符串连接到每个值:

for col in df.columns:
    df[col] = col + '_' + df[col].astype(str)

print(df)
      Col1     Col2
0  Col1_12  Col2_34
1  Col1_12  Col2_34

答案 2 :(得分:2)

将数据框中的每一行转换为字符串,并合并列名:

df = pd.DataFrame({
                   "col1": [12 , 34],
                   'col2': [7,9]},)
for c in df:
    df[c] = c + '_' + df[c].astype(str)
df

结果:

    col1    col2
0   col1_12 col2_7
1   col1_34 col2_9

答案 3 :(得分:2)

IIUC

df.apply(lambda x : x.name+'_'+x.astype(str))
Out[1323]: 
      Col1     Col2
0  Col1_12  Col2_34
1  Col1_12  Col2_34