3

次のような pandas DataFrame があります。

          A    B  
'2010-01-01'  10  20   
'2010-02-01'  20  30  
'2010-03-01'  30  10  

すべての列に関数を適用し、この DataFrame に特別な名前で新しい列を作成する必要があります。

               A   B A1 B1  
'2010-01-01'  10  20 20 40  
'2010-02-01'  20  30 40 60  
'2010-03-01'  30  10 60 20

A1したがって、名前を付けて列にB2基づいて2つの追加の列を作成する必要がありAB( name のようA1 = str(A) + str(1)に) 2 を掛けます。DataFrame.apply()または他の構造を使用してこれを行うことは可能ですか?

4

2 に答える 2

8

組み合わせを行うために使用できますjoin

>>> import pandas as pd
>>> df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})
>>> df
    A   B
0  10  20
1  20  30
2  30  10
>>> df * 2
    A   B
0  20  40
1  40  60
2  60  20
>>> df.join(df*2, rsuffix='1')
    A   B  A1  B1
0  10  20  20  40
1  20  30  40  60
2  30  10  60  20

df*2必要に応じて置き換えることができる場所df.apply(your_function)

于 2013-01-30T12:21:44.537 に答える
3

メソッドをスキップしてapply、列を直接定義するだけです。

import pandas as pd
df = pd.DataFrame({"A": [10,20,30], "B": [20, 30, 10]})
for col in df.columns:
    df[col+"1"] = df[col] * 2

DSM のソリューションほどエレガントではありません。applyしかし、本当に必要でない限り、何らかの理由で避けます。

于 2013-01-30T17:19:48.050 に答える