我有一个像这样的熊猫数据框:
columns = pd.MultiIndex.from_tuples([
('A', 'cat', 'long'), ('A', 'cat', 'long2'),
('A', 'dog', 'short'), ('B', 'dog', 'short')
],
names=['exp', 'animal', 'hair_length']
)
df = pd.DataFrame(np.random.randn(4, 4), columns=columns, index=['W', 'X', 'Y', 'Z'])
Run Code Online (Sandbox Code Playgroud)
结果是这样的结构:
exp A B
animal cat dog dog
hair_length long long2 short short
W 1.088097 -0.104486 2.574262 -0.614482
X -0.088731 0.620010 0.101627 -0.518250
Y -0.687172 0.108860 -1.932803 1.104636
Z 2.453511 0.947065 -2.144457 1.036991
Run Code Online (Sandbox Code Playgroud)
我现在需要将列结构“展平”为简单的列名列表,例如 A_cat_long、A_dog_short 等。
以下命令似乎有效:
df.columns = [ '_'.join(x) for x in df.columns ]
A_cat_long A_cat_long2 A_dog_short B_dog_short
W -0.968703 0.086291 -0.255741 1.487564
X 2.113484 -0.118909 0.698032 -0.058647
Y 0.822555 0.483175 1.221687 0.759047
Z -1.260217 1.620935 0.417836 1.581388
Run Code Online (Sandbox Code Playgroud)
任何人都可以确认这是否是正确的方法?
万一其他人遇到这个问题 - 这似乎确实可以解决问题:
df.columns = [ '_'.join(x) for x in df.columns ]
Run Code Online (Sandbox Code Playgroud)
结果:
A_cat_long A_cat_long2 A_dog_short B_dog_short
W -0.968703 0.086291 -0.255741 1.487564
X 2.113484 -0.118909 0.698032 -0.058647
Y 0.822555 0.483175 1.221687 0.759047
Z -1.260217 1.620935 0.417836 1.581388
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3776 次 |
| 最近记录: |