我正在尝试合并数据集中的变量。 我有这样的想法:
import pandas as pd
import numpy as np
data = np.array([[160,90,'skirt_trousers', 'tight_comfy'],[180,100,'trousers_skirt', 'long_short']])
dford = pd.DataFrame(data, columns = ['height','size','order', 'preference'])
我试着让它变成这样:
dataForTarget = np.array([['o1',160,90,'skirt', 'tight'],['o2', 180,100,'trousers', 'long'],['o1',160,90,'trousers', 'comfy'],['o2', 180,100,'skirt', 'short']])
Targetdford = pd.DataFrame(dataForTarget, columns = ['orderID','height','size','order', 'preference'])
作为第一步,我从字符串中提取了尽可能多的数据, 然后清洗:
variables = dford.columns.tolist()
variables.append('ord1')
secondord = dford.order.str.extractall (r'_(.*)')
secondord = secondord.unstack()
secondord.columns = secondord.columns.droplevel()
dford1 = dford.join(secondord)
dford1. columns = variables
dford1.order = dford1.order.str.replace(r'(_.*)','')
variables = dford1.columns.tolist()
variables.append('pref1')
secondpref = dford.preference.str.extractall (r'_(.*)')
secondpref = secondpref.unstack()
secondpref.columns = secondpref.columns.droplevel()
dford2 = dford1.join(secondpref)
dford2. columns = variables
dford2.order = dford2.order.str.replace(r'(_.*)','')
在这个阶段,我不知道如何添加这些新的信息作为观察(在行中)。你知道吗
我能想出的最好办法如下,但由于索引包含 重复条目。但即使它没有失败,我也怀疑它会失败 只有在我试图填充缺少的值时才有用。你知道吗
但我什么也没得到。你知道吗
dford3 = dford2.rename(columns = {'ord1': 'order', 'pref1': 'preference'})
dford3= dford3.stack()
dford3= dford3.unstack()
使用^{} +^{} 。
将生成的数据帧与^{} 连接起来,并使用^{} 创建
Hight
和Size
系列:最后,将一个添加到
OrderID
列并添加字符o
将^{} 与^{} 和^{} 一起用于新数据帧,并通过^{} 添加到原始数据帧:
相关问题 更多 >
编程相关推荐