4

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

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

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

输出应该是:

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

我尝试的是这样的:

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

但我正在努力处理列名值。如何放置真实的列名而不是字符串?或者还有其他/更好的方法吗?

4

4 回答 4

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
于 2019-05-03T19:26:51.463 回答
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
于 2019-05-03T19:05:46.127 回答
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
于 2019-05-03T19:15:19.463 回答
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
于 2019-05-03T19:18:57.693 回答