出于某种原因,我无法使此合并正常工作.
此Dataframe(rspars)有2,000多行......
rsparid f1mult f2mult f3mult
0 1 0.318 0.636 0.810
1 2 0.348 0.703 0.893
2 3 0.384 0.777 0.000
3 4 0.296 0.590 0.911
4 5 0.231 0.458 0.690
5 6 0.275 0.546 0.839
6 7 0.248 0.486 0.731
7 8 0.430 0.873 0.000
8 9 0.221 0.438 0.655
9 11 0.204 0.399 0.593
Run Code Online (Sandbox Code Playgroud)
当尝试将上述内容加入到基于rsparid此Dataframe 的列的表中时...
line_track line_race rsparid
line_date
2013-03-23 TP 10 1400
2013-02-23 GP 7 634
2013-01-01 GP 7 1508
2012-11-11 AQU 5 96
2012-10-11 BEL 2 161
Run Code Online (Sandbox Code Playgroud)
用这个......
df = pd.merge(datalines, rspars, how='left', on='rsparid')
Run Code Online (Sandbox Code Playgroud)
我得到空白..
line_track line_race rsparid f1mult f2mult f3mult
0 TP 10 1400 NaN NaN NaN
1 TP 10 1400 NaN NaN NaN
2 TP 10 1400 NaN NaN NaN
3 GP 7 634 NaN NaN NaN
4 GP 10 634 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
注意,"datalines"列可以比rspar多数千行,因此左连接.我一定做错了什么?
我也这样试过......
df = datalines.merge(rspars, how='left', on='rsparid')
Run Code Online (Sandbox Code Playgroud)
例2
我把数据放到了几行......
rspars:
rsparid f1mult f2mult f3mult
0 1400 0.216 0.435 0.656
Run Code Online (Sandbox Code Playgroud)
datalines:
rsparid
0 1400
1 634
2 1508
3 96
4 161
5 1011
6 1007
7 518
8 1955
9 678
Run Code Online (Sandbox Code Playgroud)
合并...
datalines.merge(rspars, how='left', on='rsparid')
Run Code Online (Sandbox Code Playgroud)
输出...
rsparid f1mult f2mult f3mult
0 1400 NaN NaN NaN
1 634 NaN NaN NaN
2 1508 NaN NaN NaN
3 96 NaN NaN NaN
4 161 NaN NaN NaN
5 1011 NaN NaN NaN
6 1007 NaN NaN NaN
7 518 NaN NaN NaN
8 1955 NaN NaN NaN
9 678 NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
sNaN表示它们没有rsparid共同的价值观。当合并看起来相同的东西时,这可能会很棘手。repr
小的DataFrames字符串(整数)或整数的表示看起来相同,并且dtype当帧较小时不会打印任何信息。您可以通过调用该方法来获取小框架的此信息(以及更多信息)DataFrame.info(),如下所示:df.info()。这将为您提供有关 中的内容DataFrame及其dtype列的内容的一个很好的摘要:
In [205]: datalines_int = DataFrame({'rsparid':[1400,634,1508,96,161,1011,1007,518,1955,678]})
In [206]: datalines_str = DataFrame({'rsparid':map(str,[1400,634,1508,96,161,1011,1007,518,1955,678])})
In [207]: datalines_int
Out[207]:
rsparid
0 1400
1 634
2 1508
3 96
4 161
5 1011
6 1007
7 518
8 1955
9 678
In [208]: datalines_str
Out[208]:
rsparid
0 1400
1 634
2 1508
3 96
4 161
5 1011
6 1007
7 518
8 1955
9 678
In [209]: datalines_int.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 10 entries, 0 to 9
Data columns (total 1 columns):
rsparid 10 non-null values
dtypes: int64(1)
In [210]: datalines_str.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 10 entries, 0 to 9
Data columns (total 1 columns):
rsparid 10 non-null values
dtypes: object(1)
Run Code Online (Sandbox Code Playgroud)
注意:您会注意到这里的 s略有不同repr,很可能是因为数字DataFrames 的填充。重点是,没有人能够真正看到以交互方式使用它,除非他们专门寻找差异。
| 归档时间: |
|
| 查看次数: |
4000 次 |
| 最近记录: |