我正在尝试转换pandas数据框,将一个函数应用于所有值,以连接列标题和实际值。
我的原始数据框是这样的:
|---------------------|------------------|
| Col1 | Col2 |
|---------------------|------------------|
| 12 | 34 |
|---------------------|------------------|
| 12 | 34 |
输出应为:
|---------------------|------------------|
| Col1 | Col2 |
|---------------------|------------------|
| Col1_12 | Col2_34 |
|---------------------|------------------|
| Col1_12 | Col2_34 |
我尝试过的是这个
mypandasdf.applymap(lambda x: 'columnname'+'_'+str(x))
但是我在为列名值挣扎。如何放置真实的列名而不是字符串? 还是有其他/更好的方法呢?
答案 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