Python / Pandasを使用して別のデータフレームからの列の内部合計に基づいて新しいデータフレームを作成しようとしている -- python フィールド と indexing フィールド と pandas フィールド と sum フィールド と dataframe フィールド 関連 問題

Trying to create a new dataframe based on internal sums of a column from another dataframe using Python/pandas












3
vote

問題

日本語

続かれるようにパンダデータフレームDFを持っているとしましょう。

<事前> <コード> df = DataFrame({'Col1':[1,2,3,4], 'Col2':[5,6,7,8]}) Col1 Col2 0 1 5 1 2 6 2 3 7 3 4 8

列を列内のすべての以下の要素の合計に変更する方法は?

「COL1」の場合、結果は次のとおりです。

<事前> <コード> Col1 Col2 0 10 5 1 9 6 2 7 7 3 4 8

1は1 + 2 + 3 + 4 = 10 2は2 + 3 + 4 = 9×
3は3 + 4 = 7
になります 4残りは4

です

これが可能な場合は、この動作が起こるとカットオフインデックスを指定する方法はありますか?たとえば、カットオフインデックスがキー1になる場合、結果は次のようになります。

<事前> <コード> Col1 Col2 0 1 5 1 2 6 2 7 7 3 4 8

私はこれを行うためにループを使用することよりも他の方法がないと考えていますが、ベクトル化計算を使用している方法があるかもしれません。

ありがとうございましたheaps

英語

Let's assume I have a pandas dataframe df as follow:

df = DataFrame({'Col1':[1,2,3,4], 'Col2':[5,6,7,8]})      Col1 Col2 0      1      5 1      2      6 2      3      7 3      4      8 

Is there a way for me to change a column into the sum of all the following elements in the column?

For example for 'Col1' the result would be:

    Col1   Col2 0     10      5 1      9      6 2      7      7 3      4      8 

1 becomes 1 + 2 + 3 + 4 = 10
2 becomes 2 + 3 + 4 = 9
3 becomes 3 + 4 = 7
4 remains 4

If this is possible, is there a way for me to specify a cut off index after which this behavior would take place? For example if the cut off index would be the key 1, the result would be:

    Col1   Col2 0      1      5 1      2      6 2      7      7 3      4      8 

I am thinking there is no other way than using loops to do this, but I thought there might be a way using vectorized calculations.

Thanks heaps

</div
              

回答リスト

1
 
vote
vote
ベストアンサー
 

ループを回避する1つの方法です。

<事前> <コード> i++0
 

Here is one way to avoid loop.

import pandas as pd  your_df = pd.DataFrame({'Col1':[1,2,3,4], 'Col2':[5,6,7,8]})  def your_func(df, column, cutoff):     # do cumsum and flip over     x = df[column][::-1].cumsum()[::-1]     df[column][df.index > cutoff] = x[x.index > cutoff]          return df  # to use it your_func(your_df, column='Col1', cutoff=1)  Out[68]:     Col1  Col2 0     1     5 1     2     6 2     7     7 3     4     8 
</div
 
 
1
 
vote

はい、ループを使うことができますが非常に安いもの:

<事前> <コード> i++1

と使い方:

<事前> <コード> i++2
 

Yes, you could use loop but very cheap one:

def sum_col(column,start=0):     l = len(column)     return [column.values[i:].sum() for i in range(start,l)] 

And usage:

data['Col1'] = sum_col(data['Col1'],0) 
</div
 
 

関連する質問

1  R - コマンドライン引数によってデータフレーム名を決定したい  ( R i want data frame name to be determined by a command line argument ) 
コマンドライン引数でデータフレーム名を決定したいです。以下は、私がやろうとしていることを明確にするようにしてください...私は願っています! 使用: <事前> <コード> Context ctx = getApplicationContext(); S...

1  タプルを鍵と値として辞書するPandas DataFrame  ( Pandas dataframe to dictionary with tuples as key and values ) 
私は以下の手助けが必要です: 私は以下のようにCSVファイルを持っていて、データフレーム 'DF'にロードされます。複数の領域、メモリ、VCPU、および各 '名前'に対応するストレージには異なる値があります。このデータフレームには1700行があります。 ...

1  データフレームの各列をフィルタリングすると、比類のない値の場合はNA  ( Filtering each column of a data frame an put na for unmatched values ) 
私は以下のような表を持っています: <事前> <コード> [,1] [,2] [,3] [,4] [,5] [1,] a A 0.06 0.31 -1.5 [2,] b B -0.75 0.2 ...

96  データフレームセル内のリストを別々の行に爆発させる方法  ( How to explode a list inside a dataframe cell into separate rows ) 
リストを含むPandasセルをそれらの値それぞれの行に変えることを目指しています。 だから、これを取ります: nearest_neighbors 列の値を解凍してスタックしたい場合は、各値が各 opponent indextでは行になるようにしてく...

0  Pandasを使って最寄りの分をマージします  ( Merge with the nearest minute using pandas ) 
私は単に±1分の間隔で2つのデータフレームをマージしたいです。 ここにサンプルデータセットを持つname_df: <事前> <コード> Name Date A 2/19/2019 17:16:15 B 2/19/2019 17:...

1  データフレーム内のエントリの変更は、2つの値の間にあるか、値の下にあるかどうかに応じて  ( Changing entries in a dataframe depending on whether they are between two values ) 
私は1列の距離を持つデータフレームと他の列のスコア、例えば <事前> <コード> Distance Scores 1000. 1 1500. 1 ETC。 私は言う区分的な機能を持っています: 距離&gt = 1000の場合、スコアをゼロに変...

12  Rの重複属性を持つ行を取り除きます  ( Get rid of rows with duplicate attributes in r ) 
私は次のような列を持つ大きなデータフレームを持っています。 <事前> <コード> ID, time, OS, IP そのデータフレームの各行は1つのエントリに対応します。一部の IDS 複数のエントリ(行)のデータフレーム内には存在します。それらの複数行を...

1  Pandas Groupbyをグループ行グループに使用するには、列値を合計して決定できますか?  ( Can you use pandas groupby to group rows determined by summing a column value ) 
データフレームの行を1列の値でグループ化したいと思います。以下に示す例は、iが150の値で 'NumberOfTrades'の値をグループ化していた場合であるので、上位2行がグループ化され、下位3行がグループ化されます。私が理解している次のステップは、各グルー...

2  パンダの行を変更します  ( Change rows in pandas ) 
Pandasデータフレームにマトリックスを持っています <事前> <コード> print dfMatrix 0 1 2 3 4 0 10000 10 8 11 ...

4  rbind()を使用して、複数のデータフレームを1つの大きさのデータに組み合わせる。  ( Using rbind to combine multiple data frames into one larger data frame within ) 
R-Studio 0.99.491とRバージョン3.2.3(2015-12-10)を使用しています。私はrの相対的なニュービーです、そして私はいくつかの助けに感謝します。私は、古いメディアサーバー上のサーバーログを使用しようとしているプロジェクトをやっていま...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有