合并熊猫中两行的内容

时间:2019-01-22 15:03:47

标签: python pandas dataframe

我有一个数据框,我想在同一单元格中合并两行的内容,并用下划线分隔。 如果这是原始DF:

0   eye-right   eye-right   hand
1   location    location    position
2   12          27.7        2
3   14          27.6        2.2

我希望它成为:

0   eye-right_location   eye-right_location   hand_position
1   12                   27.7                 2
2   14                   27.6                 2.2

最终,我想将第0行转换为标题,并为整个df重置索引。

2 个答案:

答案 0 :(得分:4)

您可以设置列标签,先通过iloc进行切片,然后通过reset_index进行切片:

print(df)
#            0          1         2
# 0  eye-right  eye-right      hand
# 1   location   location  position
# 2         12       27.7         2
# 3         14       27.6       2.2

df.columns = (df.iloc[0] + '_' + df.iloc[1])
df = df.iloc[2:].reset_index(drop=True)

print(df)
#   eye-right_location eye-right_location hand_position
# 0                 12               27.7             2
# 1                 14               27.6           2.2

答案 1 :(得分:1)

我非常喜欢jpp's answer。简短而甜美。非常适合快速分析。

只有一个小问题:生成的DataFrame是通用类型的。因为字符串在前两行中,所以所有列都被视为类型object。您可以使用info方法看到这一点。

对于数据分析,通常最好使列具有特定的数字类型。可以用另一行来整理:

df.columns = df.iloc[0] + '_' + df.iloc[1]
df = df.iloc[2:].reset_index(drop=True)
df = df.apply(pd.to_numeric)

此处的第三行将Panda的to_numeric函数依次应用于每一列,并保留类型更多的DataFrame:

虽然对于简单用法而言不是必需的,但是一旦您开始在DataFrame上执行数学运算或开始使用非常大的数据集,列类型就成为您需要注意的事情。