Python 熊猫柱变换

Python 熊猫柱变换,python,pandas,Python,Pandas,我想转换我的数据,因为我有一列是这种格式的 a = {'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0'} b = {'Monday': '17:30-21:30', 'Wednesday': '17:30'} df = pd.DataFrame({'hours':[np.nan, a, b], 'id':['sdfdad','ddfsfs','sedfws']}) print (df)

我想转换我的数据,因为我有一列是这种格式的

a = {'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0'}
b = {'Monday': '17:30-21:30', 'Wednesday': '17:30'}
df = pd.DataFrame({'hours':[np.nan, a, b],
                   'id':['sdfdad','ddfsfs','sedfws']})
print (df)
                                             hours      id
0                                              NaN  sdfdad
1      {'Monday': '9:0-0:0', 'Tuesday': '9:0-0:0'}  ddfsfs
2  {'Monday': '17:30-21:30', 'Wednesday': '17:30'}  sedfws
我要钥匙:星期一,星期二。。。作为列名,0-9作为其单元格值,如下所示

Monday   Tuesday       Wednesday
9:0-0:0  17:30-21:30   17:30-21:30

yelp_business=pd.read_csv('yelp-dataset/cs_data/business.csv')
这是目前的情况,,

这是需要的。

首先替换缺失值以清空列表理解中的dict,并传递给
数据帧
构造函数,最后的
id
列,也用于测试错误值
np.nan==np.nan
False

c =  ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
L = [x if x == x else {} for x in df['hours']]
df1 = df[['id']].join(pd.DataFrame(L, index=df.index, columns=c))
print (df1)
       id       Monday  Tuesday Wednesday  Thursday  Friday  Saturday  Sunday
0  sdfdad          NaN      NaN       NaN       NaN     NaN       NaN     NaN
1  ddfsfs      9:0-0:0  9:0-0:0       NaN       NaN     NaN       NaN     NaN
2  sedfws  17:30-21:30      NaN     17:30       NaN     NaN       NaN     NaN

欢迎来到SO,请阅读,也不要截图,使用复制粘贴代替。在这一点上,这很难帮助您,我们错过了一个试验输入(CSV中的一些行)、所需的输出描述。数据的业务id在哪里?看起来您必须转换数据,以便通过从“小时”列中的对象中提取日期数据并将其与业务id进行匹配,从而获得日期列。是的,实际上在我的数据框中,我有一个列名“小时”,每个单元格中有多个值,如{“星期一”:“9:0-0:0”,“星期二”:“9:0-0:0”,“W…”我想要的是将hour列替换为7列,命名为周一周二周三。。。每个值表示一个cell@AbdulRafay-代码存在一些问题?数据=[(类型(d)为dict)且数据中的d为d或dict(d)]值错误:字典更新序列元素#0的长度为1;2是必需的,我得到了这个错误。这一行中有一个问题,在df['hours']@Abdul Rafay中,L=[x if x==x else{}对于x,df['hours']@什么是
打印(df['hours'].apply(type))
对于非NaNs值?如果是字符串,请尝试导入ast和
L=[ast.literal_eval(x)If x==x else{}在df['hours']]中输入x