2015-02-05 42 views
2

如何將DataFrame拷貝到_cliboard並將其粘貼到excel中並用逗號作爲小數點?熊貓(Python)to_clipboard用逗號作爲小數點參數

在R中這很簡單。

write.table(obj, 'clipboard', dec = ',') 

但我找不到pandas to_clipboard。

我不成功試圖改變:

import locale 
locale.setlocale(locale.LC_ALL, '') 

Spanish_Argentina.1252

df.to_clipboard(float_format = '%,%')

在此先感謝

+0

'to_clipboard'採用與'to_csv'相同的參數。但我認爲最主要的是你的float格式沒有正確指定。你可能需要弄亂你的區域設置:http://stackoverflow.com/questions/6633523/how-can-i-convert-a-string-with-dot-and-comma-into-a-float- python – 2015-02-05 18:41:53

+0

@PaulH我認爲'read_csv'使用了[格式規範](https://docs.python.org/2/library/string.html#format-specification-mini-language),因此' float_format =「:n」'可以工作(如果你設置了你的語言環境)。它似乎沒有工作,雖然(TypeError不是所有的參數覆蓋)。 :( – 2015-02-05 20:24:51

+0

我嘗試過'df.to_clipboard(float_format =':n')'但顯示出'TypeError:'str'對象不可調用' – Diego 2015-02-05 20:41:57

回答

2

有一些不同的方式來實現這一目標。首先,它可能與float_format和您的語言環境,雖然使用不是那麼簡單(但簡單,一旦你知道的那樣:float_format參數應該是一個可調用的函數):

df.to_clipboard(float_format='{:n}'.format) 

小插圖:

In [97]: df = pd.DataFrame(np.random.randn(5,2), columns=['A', 'B']) 

In [98]: df 
Out[98]: 
      A   B 
0 1.125438 -1.015477 
1 0.900816 1.283971 
2 0.874250 1.058217 
3 -0.013020 0.758841 
4 -0.030534 -0.395631 

In [99]: df.to_clipboard(float_format='{:n}'.format) 

給出:

  A   B 
0 1,12544 -1,01548 
1 0,900816 1,28397 
2 0,87425 1,05822 
3 -0,0130202 0,758841 
4 -0,0305337 -0,395631 

如果你不想依靠locale設置,但仍然有逗號小數輸出,你可以這樣做:

class CommaFloatFormatter: 
    def __mod__(self, x): 
     return str(x).replace('.',',') 

df.to_clipboard(float_format=CommaFloatFormatter()) 

或者乾脆轉換寫入數據到剪貼板之前:

df.applymap(lambda x: str(x).replace('.',',')).to_clipboard() 
+0

它的工作原理!我更喜歡第一個。謝謝@joris。 – Diego 2015-02-09 13:07:48

相關問題