Issue 1:
I have several groupby problems crop up regularly at work**, and almost always have to write custom functions for operating on individual groups - which are then very slow to execute.

Looking for solutions, I came across

http://esantorella.com/2016/06/16/groupby/

and the update

https://github.com/esantorella/hdfe/blob/master/groupby.py

I had to adapt my function a little bit to be compatible with numpy- instead of pandas-indexing, but in one case I tested today, this sped up my code by more than a factor 100, and this wasn't even for the full dataset. In fact (for ~5mio rows), the pandas-native version didn't finish in 2h, whereas the adaptation based on the code linked above ran in ~35sec.

It would be very nice if such optimisations would be taken care of directly by pandas, instead of having to work around like this.

** one example among many: process data from source, deduplicate based on a given signature, process further, keep deduplicated record. Updates to this record need to recalculate any time one of the constituent records has changed

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

import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c'])}
df = pd.DataFrame(d)
dados.to_clipboard(index=False, header=False, line_terminator="\r\n")

Problem description

I just upgraded to pandas 0.23.0 and this code on my program broke. This is likelly related to #21104.

According to DataFrame.to_clipboard documentation, it would pass any **kwargs down to DataFrame.to_csv, which has the line_terminator argument and used to work fine.

It seems that it now uses DataFrame.to_string albeit undocumented. This function does not support the same set of arguments as DataFrame.to_csv which is bound to cause some bugs.

I get the following error:

>>> df.to_clipboard(index=False, header=False, line_terminator="\r\n")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\u5en\ArqProg\Anaconda3\lib\site-packages\pandas\core\generic.py", line 2246, in to_clipboard
clipboards.to_clipboard(self, excel=excel, sep=sep, **kwargs)
File "C:\Users\u5en\ArqProg\Anaconda3\lib\site-packages\pandas\io\clipboards.py", line 117, in to_clipboard
objstr = obj.to_string(**kwargs)
TypeError: to_string() got an unexpected keyword argument 'line_terminator'

I also note that Series.to_clipboard seems to silently ignore the line_terminator parameter, which also is not good.

Output of pd.show_versions()

[paste the output of pd.show_versions() here below this line]

INSTALLED VERSIONS

commit: None

python: 3.6.5.final.0

python-bits: 32

OS: Windows

OS-release: 7

machine: AMD64

processor: Intel64 Family 6 Model 42 Stepping 7, GenuineIntel

byteorder: little

LC_ALL: None

LANG: None

LOCALE: None.None

pandas: 0.23.0

pytest: 3.5.1

pip: 10.0.1

setuptools: 39.1.0

Cython: 0.28.2

numpy: 1.14.3

scipy: 1.1.0

pyarrow: None

xarray: None

IPython: 6.4.0

sphinx: 1.7.4

patsy: 0.5.0

dateutil: 2.7.3

pytz: 2018.4

blosc: None

bottleneck: 1.2.1

tables: 3.4.3

numexpr: 2.6.5

feather: None

matplotlib: 2.2.2

openpyxl: 2.5.3

xlrd: 1.1.0

xlwt: 1.3.0

xlsxwriter: 1.0.4

lxml: 4.2.1

bs4: 4.6.0

html5lib: 1.0.1

sqlalchemy: 1.2.7

pymysql: None

psycopg2: None

jinja2: 2.10

s3fs: None

fastparquet: None

pandas_gbq: None

pandas_datareader: None