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

标签 python pandas dataframe missing-data

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

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/

相关文章:

python - 使用 xlrd 引擎在 xls 文件上调用 pands read_excel 时出现 AssertionError

python - 按标签选择的 Pandas 有时会返回 Series,有时会返回 DataFrame

r - 在 R 中分割日期

python - 在 python 中重复 y/n 问题的有效方法

python - 反转列表项的算法?

python - 如何使用python打印随机森林回归中重要特征的顺序?

python - 将具有 x 列的数据帧插入 <x 列

python - 了解带有嵌套 `FOR` 语句的 `IF` 循环的结果

oracle - Pandas 和 SQL 炼金术 : Specify Column Data Types

python - 在机器学习中使用三种不同的标签