调用pd.values

时间:2019-05-06 15:41:52

标签: python pandas dataframe

我有一个pd数据框。当我致电pd.values时,结果如下:

np.array([
    [1, 2, [0, 0, 0], 3],
    [1, 2, [0, 0, 0], 3]
])

,我希望在调用pd.values时看起来像这样:

np.array([
    [1, 2, 0, 0, 0, 3],
    [1, 2, 0, 0, 0, 3]
])

请帮帮我。

1 个答案:

答案 0 :(得分:2)

假设您的数据框为:

df = pd.DataFrame([
    [1, 2, [0, 0, 0], 3],
    [1, 2, [0, 0, 0], 3]
])

我将使用this post by @wim的见解,在此介绍以下修改后的功能。

这会展平任意嵌套的集合。

from collections import Iterable

def flatten(collection):
    for element in collection:
        if isinstance(element, Iterable) and not isinstance(element, str):
            yield from flatten(element)
        else:
            yield element

然后我可以使用它来展平数据框的每一行:

pd.DataFrame([*map(list, map(flatten, df.values))])

   0  1  2  3  4  5
0  1  2  0  0  0  3
1  1  2  0  0  0  3