以下是清理前的桌子:
| 姓名 | 日期 | time_lag1 | time_lag2 | time_lag3 | 滯后 |
|---|---|---|---|---|---|
| 一種 | 2000/5/3 | 1 | 0 | 1 | time_lag1 |
| 一種 | 2000/5/10 | 1 | 1 | 0 | time_lag2 |
| 一種 | 2000/5/17 | 1 | 1 | 1 | time_lag3 |
| b | 2000/5/3 | 0 | 1 | 0 | time_lag1 |
| C | 2000/5/3 | 0 | 0 | 0 | time_lag1 |
邏輯很簡單,每個名字都有幾個日期,那個日期對應一個“滯后”。我試圖做的是將“time_lag1”、“time_lag2”、...、“time_lagn”等列名與“lags”列中的值相匹配。例如,“time_lag1”的第一個值是因為列名“time_lag1”等于“lags”的對應值,也就是“time_lag1”。但是,我不知道為什么其他列和行的值變得不正確。
我的想法是:
# time_lag columns are not following a trend, so it can be lag_time4 as well.
time_list = ['time_lag1','time_lag2','lag_time4'...]
for col in time_list:
if col == df['lags'].values:
df.col == 1
else:
df.col == 0
我不知道為什么我嘗試的代碼不能很好地作業。
這是我試圖獲得的表格:
| 姓名 | 日期 | time_lag1 | time_lag2 | time_lag3 | 滯后 |
|---|---|---|---|---|---|
| 一種 | 2000/5/3 | 1 | 0 | 0 | time_lag1 |
| 一種 | 2000/5/10 | 0 | 1 | 0 | time_lag2 |
| 一種 | 2000/5/17 | 0 | 0 | 1 | time_lag3 |
| b | 2000/5/3 | 1 | 0 | 0 | time_lag1 |
| C | 2000/5/3 | 1 | 0 | 0 | time_lag1 |
uj5u.com熱心網友回復:
最簡單的方法是使用資料框從頭開始重新計算pandas.get_dummies它們update:
df.update(pd.get_dummies(df['lags']))
輸出:
name date time_lag1 time_lag2 time_lag3 lags
0 a 2000/5/3 1 0 0 time_lag1
1 a 2000/5/10 0 1 0 time_lag2
2 a 2000/5/17 0 0 1 time_lag3
3 b 2000/5/3 1 0 0 time_lag1
4 c 2000/5/3 1 0 0 time_lag1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/461319.html
標籤:python-3.x 熊猫 数据框
上一篇:R:洗掉已翻轉的重復行
