gpt4 book ai didi

python - 如何使用 Python 在一个命令中追加和设置值?

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:45 24 4
gpt4 key购买 nike

我有以下数据框 (df):

    SERV_OR_IOR_ID   IMP_START_TIME IMP_CLR_TIME  IMP_START_TIME_BIN IMP_CLR_TIME_BIN
0 -1447310116 23:59:00 00:11:00 47 0
1 1673545041 00:00:00 00:01:00 0 0
2 -743717696 23:59:00 00:00:00 47 0
3 58641876 04:01:00 09:02:00 8 18

我想复制 IMP_START_TIME_BIN 的行小于 IMP_CLR_TIME_BIN IMP_START_TIME_BIN 绝对差的倍数和 IMP_CLR_TIME_BIN然后在增加 IMP_START_TIME_BIN 的值的同时追加(在数据框的末尾)或最好追加到该行下方.

例如,对于第 3 行,差异为 10,因此我应该在数据框中追加 10 行,递增 IMP_START_TIME_BIN 中的值从8(不包括)到18(包括)。

结果应该是这样的:

    SERV_OR_IOR_ID   IMP_START_TIME IMP_CLR_TIME  IMP_START_TIME_BIN IMP_CLR_TIME_BIN
0 -1447310116 23:59:00 00:11:00 47 0
1 1673545041 00:00:00 00:01:00 0 0
2 -743717696 23:59:00 00:00:00 47 0
3 58641876 04:01:00 09:02:00 8 18
4 58641876 04:01:00 09:02:00 9 18
... ... ... ... ... ...
13 58641876 04:01:00 09:02:00 18 18

为此,我尝试执行以下操作,但没有成功:

for i in range(len(df)):
if df.ix[i,3] < df.ix[i,4]:
for j in range(df.ix[i,3]+1, df.ix[i,4]+1):
df = df.append((df.set_value(i,'IMP_START_TIME_BIN',j))*abs(df.ix[i,3] - df.ix[i,4]))

我该怎么做?

最佳答案

您可以使用此解决方案,只有必要的索引值必须是唯一的:

#first filter only values for repeating
l = df['IMP_CLR_TIME_BIN'] - df['IMP_START_TIME_BIN']
l = l[l > 0]
print (l)
3 10
dtype: int64

#repeat rows by repeating index values
df1 = df.loc[np.repeat(l.index.values,l.values)].copy()

#add counter to column IMP_START_TIME_BIN
#better explanation http://stackoverflow.com/a/43518733/2901002
a = pd.Series(df1.index == df1.index.to_series().shift())
b = a.cumsum()
a = b.sub(b.mask(a).ffill().fillna(0).astype(int)).add(1)
df1['IMP_START_TIME_BIN'] = df1['IMP_START_TIME_BIN'] + a.values

#append to original df, if necessary sort
df = df.append(df1, ignore_index=True).sort_values('SERV_OR_IOR_ID')
print (df)
SERV_OR_IOR_ID IMP_START_TIME IMP_CLR_TIME IMP_START_TIME_BIN \
0 -1447310116 23:59:00 00:11:00 47
1 1673545041 00:00:00 00:01:00 0
2 -743717696 23:59:00 00:00:00 47
3 58641876 04:01:00 09:02:00 8
4 58641876 04:01:00 09:02:00 9
5 58641876 04:01:00 09:02:00 10
6 58641876 04:01:00 09:02:00 11
7 58641876 04:01:00 09:02:00 12
8 58641876 04:01:00 09:02:00 13
9 58641876 04:01:00 09:02:00 14
10 58641876 04:01:00 09:02:00 15
11 58641876 04:01:00 09:02:00 16
12 58641876 04:01:00 09:02:00 17
13 58641876 04:01:00 09:02:00 18

IMP_CLR_TIME_BIN
0 0
1 0
2 0
3 18
4 18
5 18
6 18
7 18
8 18
9 18
10 18
11 18
12 18
13 18

关于python - 如何使用 Python 在一个命令中追加和设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com