列Aの最初の行がNaN
の場合は、balance
の最初の行の値に置き換えます。そうでない場合は、列Aの最初の行とbalance
の最初の行を追加します。他の列のAとBの最初の行を変換するためにbalnce
の最初の行を使用しています。 df.iloc[0]
を使用して最初の行を取得しようとしましたが、値を設定したり追加したりできません:2つの異なる列のパンダデータフレームから値を追加する方法
data = {'id': [1, 2, 3, 4, 5, 6],
'A': [None, None, 20, 10, 39, 30],
'B': [13, 98, 23, 45, 64, 10],
'balance': [23, 41, 12, 22, 32, 0]}
df = pd.DataFrame(data)
df = df.set_index('id')
print df
A B balance
id
1 NaN 13 23
2 NaN 98 41
3 20 23 12
4 10 45 22
5 39 64 32
6 30 10 0
for i in df.columns:
if i not in ['balance']:
if df[i].iloc[0] == None:
df[i].iloc[0] = df['balance'].iloc[0]
else:
df[i].iloc[0] = df[i].iloc[0] + df['balance'].iloc[0]
print df[i]
id
1 NaN
2 NaN
3 20
4 10
5 39
6 30
Name: A, dtype: float64
id
1 36
2 98
3 23
4 45
5 64
6 10
Name: B, dtype: int64
#A[0] should be 23, and B[0] should be 13 + 23 = 36
所望の出力:
id A B balance
1 23 36 23
2 NaN 98 41
3 20 23 12
4 10 45 22
5 39 64 32
6 30 10 0
最初の行のみですか? – ayhan
あなたの散文説明はあなたのサンプルコードと一致しません。 * A *が空のときに* A *を*バランス*に設定しています。 – chrisaycock
希望の出力は何ですか?カラムバランス? – jezrael