我試圖找到每行的DataFrame 中第一個有效值和最後一個有效值之間的差異。計算每行DataFrame中第一個有效值和最後一個有效值之間的差異?
我有一個for循環的工作代碼,並尋找更快的東西。 下面是我在做什麼目前一個例子:
import pandas as pd
import numpy as np
df = pd.DataFrame(
np.arange(16).astype(np.float).reshape(4, 4),
columns=['a', 'b', 'c', 'd'])
# Fill some NaN
df.loc[0, ['a', 'd']] = np.nan
df.loc[1, ['c', 'd']] = np.nan
df.loc[2, 'b'] = np.nan
df.loc[3, :] = np.nan
print(df)
# a b c d
# 0 NaN 1.0 2.0 NaN
# 1 4.0 5.0 NaN NaN
# 2 8.0 NaN 10.0 11.0
# 3 NaN NaN NaN NaN
diffs = pd.Series(index=df.index)
for i in df.index:
row = df.loc[i]
min_i = row.first_valid_index()
max_i = row.last_valid_index()
if min_i is None or min_i == max_i: # 0 or 1 valid values
continue
diffs[i] = df.loc[i, max_i] - df.loc[i, min_i]
df['diff'] = diffs
print(df)
# a b c d diff
# 0 NaN 1.0 2.0 NaN 1.0
# 1 4.0 5.0 NaN NaN 1.0
# 2 8.0 NaN 10.0 11.0 3.0
# 3 NaN NaN NaN NaN NaN
ffill和bfill有軸參數,所以我想你可以做同樣沒有轉置。 ('df.ffill(axis = 1).bfill(axis = 1)') – ayhan
真@ayhan!我很習慣在另一個軸上做它,我錯過了它。納入答案。 – ASGM