Pandas柱变换

2024-04-23 17:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想转换我的数据,我有一个列在这种格式

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')

这就是现在的状况, enter image description here

这是需要的。 enter image description here


Tags: csv数据iddf格式businesspdyelp
1条回答
网友
1楼 · 发布于 2024-04-23 17:12:37

首先替换列表理解中缺少的值以清空dict,并传递给DataFrame构造函数,最后一列^{}id,同样用于测试错误值np.nan == np.nanis 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

相关问题 更多 >