• import pandas as pd
    import numpy as np

# 例示用のDataFrame
df = pd.DataFrame({
    'aaa': ['x', 'y', 'z'],
    'bbb': [1, 2, 3],
    'ddd': np.nan  # 初期値としてNaNをセット
})

df2 = pd.DataFrame({
    'aaa': ['x', 'y', 'a'],
    'bbb': [1, 2, 4],
    'ccc': ['value_x', 'value_y', 'value_a']
})

# dfとdf2を'aaa'と'bbb'列で照合し、一致する場合はdf2の'ccc'の値をdfの'ddd'にセット
df = df.merge(df2'aaa', 'bbb', 'ccc', on=['aaa', 'bbb'], how='left', suffixes=('', '_y'))

# 照合しない場合は'ddd'列に0をセット
df['ddd'] = df['ccc'].fillna(0)

# 不要になった'ccc'列を削除
df.drop(columns=['ccc'], inplace=True)

print(df)

# dfとdf2のマージを試みることで、'aaa'と'bbb'で一致する行を特定する
# how='left'を使用し、dfの全ての行を保持しつつ、df2との一致を探る
# indicator=Trueにより、マージ結果の各行がどのようにマージされたか(left_only, both, right_only)がわかる列が追加される
merged_df = pd.merge(df, df2, on=['aaa', 'bbb'], how='left', indicator=True)

# マージ結果から、df2に存在しない(left_only)dfのレコードのみを抽出
df_result = merged_df[merged_df['_merge'] == 'left_only'].drop(columns=['_merge'])

df_result

import pandas as pd

# サンプルデータフレームの作成
df = pd.DataFrame({
    'aaa': ['x', 'x', 'y', 'y', 'z'],
    'bbb': [1, 1, 2, 2, 3],
    'ccc': ['A', 'B', 'C', 'D', 'E']
})

# aaaとbbbでグループ化し、ccc列の値を結合して新しい列dddを作成
df2 = df.groupby(['aaa', 'bbb'])['ccc'].apply(lambda x: ' '.join(x)).reset_index(name='ddd')

# df2の確認
df2

# 各`id`ごとのコスト合計を計算
cost_sum_per_id = df.groupby('id')['cost'].transform('sum')

# 新しい列`rate`に比率を計算して格納
df['rate'] = df['cost'] / cost_sum_per_id * 100

# 結果を表示
print(df)

 

import pandas as pd

# サンプルデータフレームを作成
data = {
    'id': ['s1', 's2', 's2', 's2'],
    'item': ['z1', 'z2', 'z3', 'z4'],
    'hour': [40, 20, 80, 60],
    'cost': [800000, 800000, 800000, 800000]
}
df = pd.DataFrame(data)

# 各`id`ごとのコスト合計を計算
cost_sum_per_id = df.groupby('id')['cost'].transform('sum')

# 新しい列`rate`に比率を計算して格納
df['rate'] = df['cost'] / cost_sum_per_id * 100

# 結果を表示
df

 

 

from datetime import datetime

# 指定された日時
specified_date = datetime(1904, 1, 10, 23, 30)

# 基準日(1904年1月1日を想定)
base_date = datetime(1904, 1, 1)

# 経過時間(日として)
elapsed_days = (specified_date - base_date).days
# 経過時間(時間として、23:30を加算)
elapsed_hours = elapsed_days * 24 + 23 + 30/60

elapsed_hours

# 再実行のために必要なライブラリをインポートし、データを再度セットします。
import pandas as pd

# 変換前のデータフレームを作成します。
df_example = pd.DataFrame({
    'aaa': [1, 2, 2],
    'bbb': ['tom', 'hana', 'reiko'],
    'qty': [10, 20, 30]
})

# aaaをインデックスに、bbbをクロスカラム項目として、qtyの値で表変換します。
pivot_df = df_example.pivot(index='aaa', columns='bbb', values='qty').reset_index()
pivot_df.columns.name = None  # カラム名の階層を削除

pivot_df