私は初心者のプログラマーであり、初心者の python/pandas ユーザーです。私は行動科学者であり、パンダを使用してデータを処理および整理することを学んでいます。その結果、これらのいくつかは完全に明白に見えるかもしれませんし、フォーラムに値しない質問のように思えるかもしれません. 寛容さを持ってください!私にとって、これは何日にもわたる作業であり、この質問に対する答えをすでに見つけようと何時間も費やしてきました。助けてくれてありがとう。
私のデータは次のようになります。「実際の」Actor および Recipient データは常に 5 桁の数字であり、「Behavior」データは常に文字コードです。私の問題は、俳優列の「日付」や「s」などのマーカーで示される特別な行にもこの形式を使用していることです。これらのマーカーは、「Behavior」列がこの特殊なタイプのデータを保持しており、実際の動作データを保持していないことを示しています。そこで、Actor 列のマーカーを NaN 値に置き換え、Behavior 列から特別なデータを取得して別の列 (この例では、空の Activity 列) に入れたいと考えています。
follow Activity Actor Behavior Recipient1
0 1 NaN date 2.1.3.2012 NaN
1 1 NaN s ss.hx NaN
2 1 NaN 50505 vo 51608
3 1 NaN 51608 vr 50505
4 1 NaN s ss.he NaN
これまでのところ、パンダで「s」行を選択して新しいデータフレームに入れるコードをいくつか書きました。
def get_act_line(group):
return group.ix[(group.Actor == 's')]
result = trimdata.groupby('follow').apply(get_act_line)
このデータフレームの Behavior 列を Activity 列にコピーし、Actor と Behavior の値を NaN に置き換えました。
result.Activity = result.Behavior
result.Behavior = np.nan
result.Actor = np.nan
result.head()
したがって、私の新しいデータフレームは次のようになります。
follow follow Activity Actor Behavior Recipient1
1 2 1 ss.hx NaN NaN NaN
34 1 hf.xa NaN NaN f.53702
74 1 hf.fe NaN NaN NaN
10 1287 10 ss.hf NaN NaN db
1335 10 fe NaN NaN db
ここでやりたいことは、このデータフレームを元のデータフレームと組み合わせて、選択した行のすべての値を置き換えますが、元のデータフレームの他の行の値を維持することです。
これは明白な解決策がある単純な質問のように思えるかもしれません。
Wes McKinney の本を読み、さまざまな種類のマージ、マッピング、結合、変換、連結などに関するドキュメントを読みました。フォーラムを閲覧しましたが、これを理解するのに役立つ回答が見つかりませんでした。あなたの助けは非常に高く評価されます。