我有一个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]
])
请帮帮我。
答案 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