python - 如何将列表列表作为列添加到现有数据框
问题描述
我创建了一个数据框“df”,如下所示:
Name
0. School
1. Organisation
2. Teacher
3. Guest
现在我有三个列表
1. from=['12','18',['11','10'],['12','4','8']]
2. to = [['11','9'],'','8','3']
3. status = ['yes','no',['yes','no'],'']
我想将这 3 个列表添加到我现有的数据框 df 中,它应该看起来像这样
Name From To Status
0. School 12 11 Yes
0. School 9
1. Organisation 18 No
2. Teacher 11 8 Yes
2. Teacher 10 No
3. Guest 12 3
3. Guest 4
3. Guest 8
我试过了df['from']=from
,df['to']=to
但这并没有像我预期的那样给我桌子。
解决方案
首先,我们应该用索引来展平列表,然后使用这样的concat
方法pandas
:
import pandas as pd
df = pd.DataFrame({"Name":["School","Organisation","Teacher","Guest"]})
From = ['12','18',['11','10'],['12','4','8']]
def flat(nums):
res = []
index = []
for i in range(len(nums)):
if isinstance(nums[i], list):
res.extend(nums[i])
index.extend([i]*len(nums[i]))
else:
res.append(nums[i])
index.append(i)
return res,index
x="From"
list_flat,list_index=flat(eval(x))
dataframe = pd.DataFrame({x:list_flat},index=list_index)
df = pd.concat([df['Name'],dataframe],axis=1,sort=False)
结果是:
Name From
0 School 12
1 Organisation 18
2 Teacher 11
2 Teacher 10
3 Guest 12
3 Guest 4
3 Guest 8
推荐阅读
- r - 在 fixst::etable 中,有没有办法更改 p 值的字体大小和脚注?
- python - 在 Python 中读取位于 S3 子文件夹下的文件的内容
- android - 如何在 Kotlin 中对日期 Firestore 进行排序?
- java - Spring Security 从其他 jar 扩展配置
- python - 检查字符串是否在另一列 pandas
- zapier - 转换 GET Zap 的输出,以便我们可以读取特定的数据
- mongodb - 微服务在 K8s 上使用 MongoDB 时找不到 Postgres 驱动程序错误
- reactjs - React-router v6:无法读取未定义的属性(读取“路径名”)
- reactjs - 无法解构,因为 Object 在 Reactjs 中不可迭代
- python - Python pandas:在另一列中查找具有窗口值的 GroupBy 上的滚动统计信息(例如,中位数)