如果我有以下内容,我如何使pd.DataFrame()将此数组转换为具有两列的数据帧.什么是最有效的方式?我目前的方法是将每个副本创建为一个系列,并从中创建数据帧.
由此:
([[u'294 (24%) L', u'294 (26%) R'],
[u'981 (71%) L', u'981 (82%) R'],])
Run Code Online (Sandbox Code Playgroud)
至
x y
294 294
981 981
Run Code Online (Sandbox Code Playgroud)
而不是
x
[u'294 (24%) L', u'294 (26%) R']
Run Code Online (Sandbox Code Playgroud)
我目前的做法.寻找更有效率的东西
numL = pd.Series(numlist).map(lambda x: x[0])
numR = pd.Series(numlist).map(lambda x: x[1])
nL = pd.DataFrame(numL, columns=['left_num'])
nR = pd.DataFrame(numR, columns=['right_num'])
nLR = nL.join(nR)
nLR
Run Code Online (Sandbox Code Playgroud)
更新**
我注意到我的错误只是当你pd.DataFrame()列表与系列时.当您从列表中创建数据框时,它会将项目合并到同一列中.列表不是这样.这以最有效的方式解决了我的问题.
In [172]: data = [[u'294 (24%) L', u'294 (26%) R'], [u'981 (71%) L', u'981 (82%) R'],]
In [173]: clean_data = [[int(item.split()[0]) for item in row] for row in data]
In [174]: clean_data
Out[174]: [[294, 294], [981, 981]]
In [175]: pd.DataFrame(clean_data, columns=list('xy'))
Out[175]:
x y
0 294 294
1 981 981
[2 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21970 次 |
| 最近记录: |