如何将一系列列表转换为 python 中的数据框?
how to convert series of lists into dataframe in python?
我有以下数据框格式
student marks
a [12,12,34]
b [34,35]
c [23,45,23]
我希望它转换成如下所示
student marks_1 marks_2 marks_3
a 12 12 34
b 34 35 Nan
c 23 45 23
如何实现?请帮忙
使用 join
new DataFrame
created by extracted column marks
by pop
,转换为列表并通过自定义 lambda
函数对列使用 rename
:
f = lambda x: 'marks_{}'.format(x + 1)
df = df.join(pd.DataFrame(df.pop('marks').values.tolist()).rename(columns=f))
print (df)
student marks_1 marks_2 marks_3
0 a 12 12 34.0
1 b 34 35 NaN
2 c 23 45 23.0
详情:
print (pd.DataFrame(df.pop('marks').values.tolist()))
0 1 2
0 12 12 34.0
1 34 35 NaN
2 23 45 23.0
尝试
dfr = pd.concat([df.student, df.marks.apply(lambda el: pd.Series(
el, index=['marks_{}'.format(i + 1) for i in range(len(el))]))], axis=1)
上面的代码从标记中的每个元素创建一个索引,然后将结果与学生列连接起来,
输出:
dfr
student marks 1 marks 2 marks 3
0 a 12.0 12.0 34.0
1 b 34.0 35.0 NaN
2 c 23.0 45.0 23.0
我有以下数据框格式
student marks
a [12,12,34]
b [34,35]
c [23,45,23]
我希望它转换成如下所示
student marks_1 marks_2 marks_3
a 12 12 34
b 34 35 Nan
c 23 45 23
如何实现?请帮忙
使用 join
new DataFrame
created by extracted column marks
by pop
,转换为列表并通过自定义 lambda
函数对列使用 rename
:
f = lambda x: 'marks_{}'.format(x + 1)
df = df.join(pd.DataFrame(df.pop('marks').values.tolist()).rename(columns=f))
print (df)
student marks_1 marks_2 marks_3
0 a 12 12 34.0
1 b 34 35 NaN
2 c 23 45 23.0
详情:
print (pd.DataFrame(df.pop('marks').values.tolist()))
0 1 2
0 12 12 34.0
1 34 35 NaN
2 23 45 23.0
尝试
dfr = pd.concat([df.student, df.marks.apply(lambda el: pd.Series(
el, index=['marks_{}'.format(i + 1) for i in range(len(el))]))], axis=1)
上面的代码从标记中的每个元素创建一个索引,然后将结果与学生列连接起来,
输出:
dfr
student marks 1 marks 2 marks 3
0 a 12.0 12.0 34.0
1 b 34.0 35.0 NaN
2 c 23.0 45.0 23.0