gpt4 book ai didi

python - 插入一个系列,并为第二个(常数)系列输出常数

转载 作者:行者123 更新时间:2023-12-04 03:56:13 28 4
gpt4 key购买 nike

我正在尝试创建一个函数来填充多个系列中缺失的数字,具有不同的数字比例,同时为每个系列生成一个常量列。

from tika import parser
import pandas as pd
import numpy as np
import io

rawtext = parser.from_file('D:\Selenium\Texto.txt')
text = rawtext['content']
f = io.StringIO(text)
f.readline()
data = f.read()
f.readline()
def fill(d):
idx = range(d['col1'].min(), d['col1'].max() + 1)
return d.set_index('col1').reindex(idx, method='ffill').reset_index()
g = df['col1'].lt(df['col1'].shift()).cumsum()
df = pd.concat([fill(g) for k, g in df.groupby(g)], ignore_index=True)
print(df)

是否可以使用 Pandas 创建以下函数?

示例数据框:

1029 400
1035 400
1031 340
1039 340
1020 503
1025 503

预期输出:

1029 400
1030 400
1031 400
1032 400
1033 400
1034 400
1035 400
1031 340
1032 340
1033 340
1034 340
1035 340
1036 340
1037 340
1038 340
1039 340
1020 503
1021 503
1022 503
1023 503
1024 503
1025 503

最佳答案


def fill(d):
idx = range(d['col1'].min(), d['col1'].max() + 1)
return d.set_index('col1').reindex(idx, method='ffill').reset_index()


g = df['col1'].lt(df['col1'].shift()).cumsum()
df = pd.concat([fill(g) for k, g in df.groupby(g)], ignore_index=True)

详情:

识别 col1 中存在缺失值的所有单调递增部分。这可以在 Series.lt 的帮助下完成+ Series.shiftSeries.cumsum创建石斑鱼 g:

print(g)
0 0
1 0
2 1
3 1
4 2
5 2
Name: col1, dtype: int64

然后 groupby这个石斑鱼的数据帧和每个分组帧 fill 使用自定义定义函数的空白,该函数使用 reindex数据框的方法来填充缺失值。

print(fill(g)) # sample filled values for first group
col1 col2
0 1029 400
1 1030 400
2 1031 400
3 1032 400
4 1033 400
5 1034 400
6 1035 400

最后使用 pd.concat ,在填充缺失值后连接所有这些分组的帧。

print(df)
col1 col2
0 1029 400
1 1030 400
2 1031 400
3 1032 400
4 1033 400
5 1034 400
6 1035 400
7 1031 340
8 1032 340
9 1033 340
10 1034 340
11 1035 340
12 1036 340
13 1037 340
14 1038 340
15 1039 340
16 1020 503
17 1021 503
18 1022 503
19 1023 503
20 1024 503
21 1025 503

关于python - 插入一个系列,并为第二个(常数)系列输出常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63867276/

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