Issue 1:
When you save MultiIndex DataFrame to csv and then loading it with no additional parameters pandas not able to read multiindices properly and reconstructed dataframe is incorrect, however all MultiIndices are stored. Creating MultiIndex DataFrame:

>>> import pandas as pd
>>> arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
>>> tuples = list(zip(*arrays))
>>> index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
>>> df = pd.DataFrame(np.random.randn(6, 6), index=index[:6], columns=index[:6])

>>> df
first bar baz foo
second one two one two one two
first second
bar one 0.608879 -1.128122 -0.238610 1.089921 0.521766 1.116998
two 1.161840 0.876528 -1.417781 -1.150305 -1.043776 0.458298
baz one 1.761382 0.634688 -1.146492 -0.082379 0.414079 -0.520011
two 1.079547 0.667917 0.122468 -1.112053 0.408232 0.703068
foo one -1.031256 1.439310 0.604550 -0.275087 -0.316610 -0.589309
two 1.730061 -1.213560 -0.581617 -0.260879 0.069140 0.970397

Now saving to .csv

>>> df.to_csv('test.csv')

File content:

first,,bar,bar,baz,baz,foo,foo
second,,one,two,one,two,one,two
first,second,,,,,,
bar,one,-0.218970051706,-0.37813933444,-0.7634843365,-0.704262374956,-0.839464555892,0.541422908532
bar,two,0.681850126209,-0.12138626844,0.361273042684,0.143076786043,0.89542332917,-1.4010526032
baz,one,-0.818985292735,-1.09454292831,0.162462638192,-1.03231385607,0.553385654032,0.585854960842
baz,two,-1.54054784208,1.00696690064,0.976815889071,-1.39618300884,0.283526891003,-0.942377368698
foo,one,1.08113073993,-0.29494275034,0.738820962724,-1.62865612926,1.10227198603,-0.628396328368
foo,two,0.135391399079,0.410272615409,0.59806563553,0.172448276698,0.11403085441,1.47679237362

Loading file:

>>> df = pd.read_csv('test.csv')

first Unnamed: 1 bar bar.1 baz \
0 second NaN one two one
1 first second NaN NaN NaN
2 bar one 0.608879221531 -1.12812151143 -0.238610193059
3 bar two 1.16184022363 0.876527615412 -1.41778054545
4 baz one 1.76138211998 0.634687797737 -1.14649190565
5 baz two 1.0795474718 0.667917354209 0.122468371132
6 foo one -1.03125632895 1.43930972259 0.604550496274
7 foo two 1.73006141389 -1.21356047236 -0.581617481203

baz.1 foo foo.1
0 two one two
1 NaN NaN NaN
2 1.08992073325 0.521766323704 1.11699823915
3 -1.15030481312 -1.04377642582 0.458297920053
4 -0.0823790312557 0.414078987249 -0.520010569472
5 -1.11205302607 0.40823221543 0.703068488788
6 -0.27508709062 -0.316610246209 -0.589308900542
7 -0.260878563358 0.0691397545038 0.9703965012

Yes, I know that I need to specify columns and index parameters, but why I should do this? All information needed to restore original DataFrame with MultiIndex are already in the file. Is it possible to make it default to parse MultiIndices in csv, for example, using multiple separators in a row:

first,second,,,,,,

Issue 2:
Code Sample, a copy-pastable example if possible

import pandas as pd
s1 = pd.Series(data = [1,2,3,4,5], index = [1,2,3,4,4])
s2 = pd.Series(data = [1,2,3,4,5], index = ['1', '2', '3', '4', '4'])

s1[0] # KeyError
s2[0] # KeyError

s1.iloc[:4][0] # KeyError
s1.iloc[:5][0] # KeyError

s2.iloc[:4][0] # Returns 1!
s2.iloc[:5][0] # TypeError & KeyError

Problem description

s2[0] throws a KeyError because the key, 0, is not in the index. This behavior is expected. s2.iloc[:5][0] also has this correct behavior. However, once the duplicate index has been removed, s2.iloc[:4][0], this error is not thrown and instead the value at position 0 is returned.

This error is present with string type indexes, but does not occur with integer indexes (see examples involving s1 above). I have not tried other index types.

Issue is present in a fresh conda environment with python version 3.6.2 and pandas version 0.21.1 (via conda-forge).

Expected Output

s2.iloc[:4][0] should fail with TypeError and KeyError.

Output of pd.show_versions()

INSTALLED VERSIONS

commit: None

python: 3.6.2.final.0

python-bits: 64

OS: Linux

OS-release: 2.6.32-696.13.2.el6.x86_64

machine: x86_64

processor: x86_64

byteorder: little

LC_ALL: None

LANG: en_US.UTF-8

LOCALE: en_US.UTF-8

pandas: 0.21.1

pytest: None

pip: 9.0.1

setuptools: 36.4.0

Cython: None

numpy: 1.13.1

scipy: None

pyarrow: None

xarray: None

IPython: None

sphinx: None

patsy: None

dateutil: 2.6.1

pytz: 2017.3

blosc: None

bottleneck: None

tables: None

numexpr: None

feather: None

matplotlib: None

openpyxl: None

xlrd: None

xlwt: None

xlsxwriter: None

lxml: None

bs4: None

html5lib: None

sqlalchemy: None

pymysql: None

psycopg2: None

jinja2: None

s3fs: None

fastparquet: None

pandas_gbq: None

pandas_datareader: None