将列表添加到 DF/将字符串扩展到新列和数据
Add lists to DF / Expand string to new column and data
我有一个 CSV 文件,其中有一列包含带有车辆选项的字符串。
Brand Options
Toyota Color:Black,Wheels:18
Toyota Color:Black,
Chevy Color:Red,Wheels:16,Style:18
Honda Color:Green,Personalization:"Customer requested detailing"
Chevy Color:Black,Wheels:16
我想将“选项”字符串扩展到具有适当名称的新列。数据集相当大,所以我试图以编程方式命名列(即:颜色、轮子、个性化),然后将相应的值应用于行或空值。
添加新数据
import pandas as pd
Cars = pd.read_csv("Cars.CSV") # Loads cars into df
split = Cars["Options"].str.split(",", expand = True) # Data in form of {"Color:Black", "Wheels:16"}
split[0][0].split(":") # returns ['Color', 'Black']
在没有指定列的情况下将这些列表连接到原始数据框 Cars 的优雅方法是什么?
您可以准备一个干净的 split
,方法是首先使用 rstrip
以避免出现空列,因为您有一行末尾有逗号。然后,拆分后,分解为多行并再次拆分 :
,这次使用 expand=True
。然后,pivot
将数据集转换为所需格式并 concat
返回原始数据帧:
pd.concat([df,
df['Options'].str.rstrip(',')
.str.split(',')
.explode()
.str.split(':', expand=True)
.pivot(values=1, columns=0)],
axis=1).drop('Options', axis=1)
Out[1]:
Brand Color Personalization Style Wheels
0 Toyota Black NaN NaN 18
1 Toyota Black NaN NaN NaN
2 Chevy Red NaN 18 16
3 Honda Green "Customer requested detailing" NaN NaN
4 Chevy Black NaN NaN 16
我有一个 CSV 文件,其中有一列包含带有车辆选项的字符串。
Brand Options Toyota Color:Black,Wheels:18 Toyota Color:Black, Chevy Color:Red,Wheels:16,Style:18 Honda Color:Green,Personalization:"Customer requested detailing" Chevy Color:Black,Wheels:16
我想将“选项”字符串扩展到具有适当名称的新列。数据集相当大,所以我试图以编程方式命名列(即:颜色、轮子、个性化),然后将相应的值应用于行或空值。
添加新数据
import pandas as pd
Cars = pd.read_csv("Cars.CSV") # Loads cars into df
split = Cars["Options"].str.split(",", expand = True) # Data in form of {"Color:Black", "Wheels:16"}
split[0][0].split(":") # returns ['Color', 'Black']
在没有指定列的情况下将这些列表连接到原始数据框 Cars 的优雅方法是什么?
您可以准备一个干净的 split
,方法是首先使用 rstrip
以避免出现空列,因为您有一行末尾有逗号。然后,拆分后,分解为多行并再次拆分 :
,这次使用 expand=True
。然后,pivot
将数据集转换为所需格式并 concat
返回原始数据帧:
pd.concat([df,
df['Options'].str.rstrip(',')
.str.split(',')
.explode()
.str.split(':', expand=True)
.pivot(values=1, columns=0)],
axis=1).drop('Options', axis=1)
Out[1]:
Brand Color Personalization Style Wheels
0 Toyota Black NaN NaN 18
1 Toyota Black NaN NaN NaN
2 Chevy Red NaN 18 16
3 Honda Green "Customer requested detailing" NaN NaN
4 Chevy Black NaN NaN 16