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