首页 > 解决方案 > 结合 pandas df 列和行以获取字符串中的对 - python

问题描述

这是我的df:

d = {'Equipment': ['A','B','C'], 'Downtime': [3,8, 4]}
df = pd.DataFrame(data=d)

我想创建一个看起来像的字符串(A,3);(B,8);(C,4)

更好的是:

(Equipment:A,Downtime:3);(Equipment:B,Downtime:8);(Equipment:C,Downtime:4)

标签: python-3.xpandasdataframe

解决方案


使用df.apply和的解决方案str.join

print(
    ";".join(
        df.apply(
            lambda x: "("
            + ",".join(
                "{}:{}".format(name, value) for name, value in zip(x.index, x)
            )
            + ")",
            axis=1,
        ).values
    )
)

印刷:

(Equipment:A,Downtime:3);(Equipment:B,Downtime:8);(Equipment:C,Downtime:4)

编辑:要在 DataFrame 中获得输出:

x = ";".join(
    df.apply(
        lambda x: "("
        + ",".join(
            "{}:{}".format(name, value) for name, value in zip(x.index, x)
        )
        + ")",
        axis=1,
    ).values
)
df_out = pd.DataFrame([{"Name": x}])
print(df_out)

印刷:

                                                Name
0  (Equipment:A,Downtime:3);(Equipment:B,Downtime...

推荐阅读