Spaces:
Sleeping
Sleeping
import pandas as pd | |
import numpy as np | |
def flatten_ndarray_column(df, column_name): | |
def flatten_ndarray(ndarray): | |
if isinstance(ndarray, np.ndarray) and ndarray.dtype == 'O': | |
return np.concatenate([flatten_ndarray(subarray) for subarray in ndarray]) | |
elif isinstance(ndarray, np.ndarray) and ndarray.ndim == 1: | |
return np.expand_dims(ndarray, axis=0) | |
return ndarray | |
flattened_data = df[column_name].apply(flatten_ndarray) | |
max_length = max(flattened_data.apply(len)) | |
for i in range(max_length): | |
df[f'{column_name}_{i}'] = flattened_data.apply(lambda x: x[i] if i < len(x) else np.nan) | |
return df | |
# 示例用法 | |
if __name__ == "__main__": | |
# 创建示例 DataFrame | |
data = { | |
'target': [np.array([np.array([1, 2]), np.array([3, 4])]), np.array([5, 6, 7])] | |
} | |
df = pd.DataFrame(data) | |
# 拆分 target 列中的嵌套 ndarray | |
df = flatten_ndarray_column(df, 'target') | |
print(df) | |