5

これは簡単な質問ですが、オンラインで回答を見つけるのは驚くほど困難です。状況は次のとおりです。

>>> A
[('hey', 'you', 4), ('hey', 'not you', 5), ('not hey', 'you', 2), ('not hey', 'not you', 6)]
>>> A_p = pandas.DataFrame(A)
>>> A_p
         0        1  2
0      hey      you  4
1      hey  not you  5
2  not hey      you  2
3  not hey  not you  6
>>> B_p = A_p.pivot(0,1,2)
>>> B_p
1        not you  you
0                    
hey            5    4
not hey        6    2

これは、ドキュメントで提案されているものとはまったく異なりpivotます。左上隅に 1 と 0 がない結果が表示されます。そして、それが私が探しているものであり、次のように印刷される DataFrame オブジェクトです

         not you  you
hey            5    4
not hey        6    2

問題は、通常の動作では、最初の行が次の csv ファイルになることです。

0,not you,you

本当に欲しい時

not you, you

通常の csv ファイル (前に「0」が付いている) を R に読み込むと、フレーム オブジェクトから列名と行名が適切に設定されないため、正しい形式にするための手動操作が面倒になります。ピボットを取得して、左上隅に追加情報を表示せずに DataFrame オブジェクトを提供する方法はありますか?

4

1 に答える 1

4

さて、あなたは持っています:

In [17]: B_p.to_csv(sys.stdout)
0,not you,you
hey,5.0,4.0
not hey,6.0,2.0

In [18]: B_p.to_csv(sys.stdout, index=False)
not you,you
5.0,4.0
6.0,2.0

ただし、行名が必要だと思います。インデックス名をNone(B_p.index.name = None)に設定すると、先頭にコンマが付きます。

In [20]: B_p.to_csv(sys.stdout)
,not you,you
hey,5.0,4.0
not hey,6.0,2.0

これは、Rが次のwrite.csv場合に書き込む内容とほぼ一致します(引用符で囲まれた文字列は無視されます) row.names=TRUE

"","a","b"
"foo",0.720538259472741,-0.848304940318957
"bar",-0.64266667412325,-0.442441171401282
"baz",-0.419181615269841,-0.658545964124229
"qux",0.881124313748992,0.36383198969179
"bar2",-1.35613767310069,-0.124014006180608

これらの助けはありますか?

編集:index_label=Falseあなたが望むことをするオプションを今日追加しました:

In [2]: df
Out[2]: 
       A  B
one    1  4
two    2  5
three  3  6

In [3]: df.to_csv('foo.csv', index_
index_exp     index_label=  index_name=   

In [3]: df.to_csv('foo.csv', index_name=False)

In [4]: 
11:24 ~/code/pandas  (master)$ R

R version 2.14.0 (2011-10-31)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-unknown-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

[Previously saved workspace restored]

re> read.csv('foo.csv')
      A B
one   1 4
two   2 5
three 3 6
于 2012-06-21T15:31:58.657 に答える