将带有单个1xM数组包含列的Nx1 pandas数据帧转换为pandas数据帧中的M列

2024-09-28 17:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我当前拥有的数据帧:它是Nx1,每个单元格包含一个numpy数组

print (df)
          age  
0   [35, 34, 55, 56]
1   [25, 34, 35, 66] 
2   [45, 35, 53, 16]
.
.
.
N   [45, 35, 53, 16]

我想以某种方式将每个单元格中的每个值拆分为一个新列

# do conversion
print (df)

   age1  age2  age3  age4
0   35    34    55    56  
1   25    34    35    66  
2   45    35    53    16  
.
.
.
N   45    35    53    16  

Tags: 数据numpydfage方式数组doprint
3条回答

另一种选择是:

import pandas as pd
df = pd.DataFrame({'age':[[35,34,55,54],[1,2,3,4],[5,6,7,8],[9,10,11,12]]})
df['age_aux'] = df['age'].astype(str).str.split(',')
for i in range(4):
    df['age_'+str(i)] = df['age_aux'].str.get(i).map(lambda x: x.lstrip('[').rstrip(']'))
df = df.drop(columns=['age','age_aux'])
print(df)

输出:

  age_0 age_1 age_2 age_3
0    35    34    55    54
1     1     2     3     4
2     5     6     7     8
3     9    10    11    12

另一种变体是将pd.Series应用于列并对列名进行按摩:

df= pd.DataFrame( { "age": [[1,2,3,4],[2,3,4,5]] })

df = df["age"].apply(pd.Series)
df.columns = ["age1","age2","age3","age4"]

您可以从列表中重建数据帧,并使用以下内容自定义列名:

df = pd.DataFrame(df.age.values.tolist())
df.columns += 1
df = df.add_prefix('age')

print(df)

   age1  age2  age3  age4
0    35    34    55    56
1    25    34    35    66
...

相关问题 更多 >