python - 如何扩展数据框中的范围并复制值?

标签 python pandas numpy

我目前正在解析一个文件,并将其发送到一个数据框以打印到 excel。我想知道如何扩展数据框中的范围以创建更多行并复制原始行中的数据。

数据框看起来像这样

    Hour Value 1 Value 2 Value 3 Value 4 Value 5 
0   1-22   75.43   75.43   75.45   96.54  109.25        
1     23   20.82   20.82   20.84   41.93   54.64        
2     24   81.26   81.26   81.28  102.37  115.08        

理想情况下我希望它看起来像这样

     Hour  Value 1  Value 2  Value 3  Value 4  Value 5 
0     1    75.43    75.43    75.45    96.54    109.25
1     2    75.43    75.43    75.45    96.54    109.25
2     3    75.43    75.43    75.45    96.54    109.25 
...
4     22   75.43    75.43    75.45    96.54    109.25          
5     23   20.82    20.82    20.84    41.93     54.64        
6     24   81.26    81.26    81.28   102.37    115.08        

最佳答案

您可以使用 str.splitexplode这里[1]

m = [
  np.arange(*map(int, el)).astype(str) if len(el) == 2 else el
  for el in df['Hour'].str.split('-')
]

df.assign(Hour=m).explode('Hour')

  Hour  Value 1  Value 2  Value 3  Value 4  Value 5
0    1    75.43    75.43    75.45    96.54   109.25
0    2    75.43    75.43    75.45    96.54   109.25
0    3    75.43    75.43    75.45    96.54   109.25
0    4    75.43    75.43    75.45    96.54   109.25
0    5    75.43    75.43    75.45    96.54   109.25
0    6    75.43    75.43    75.45    96.54   109.25
0    7    75.43    75.43    75.45    96.54   109.25
0    8    75.43    75.43    75.45    96.54   109.25
0    9    75.43    75.43    75.45    96.54   109.25
0   10    75.43    75.43    75.45    96.54   109.25
0   11    75.43    75.43    75.45    96.54   109.25
0   12    75.43    75.43    75.45    96.54   109.25
0   13    75.43    75.43    75.45    96.54   109.25
0   14    75.43    75.43    75.45    96.54   109.25
0   15    75.43    75.43    75.45    96.54   109.25
0   16    75.43    75.43    75.45    96.54   109.25
0   17    75.43    75.43    75.45    96.54   109.25
0   18    75.43    75.43    75.45    96.54   109.25
0   19    75.43    75.43    75.45    96.54   109.25
0   20    75.43    75.43    75.45    96.54   109.25
0   21    75.43    75.43    75.45    96.54   109.25
1   23    20.82    20.82    20.84    41.93    54.64
2   24    81.26    81.26    81.28   102.37   115.08

[1] 您需要 pandas >= 0.25.0 才能使用 pandas.Series.explode

关于python - 如何扩展数据框中的范围并复制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204207/

相关文章:

python - 当索引列包含重复项时,DataFrame 列中的 Pandas 系列

python - 在 Selenium Web 驱动程序上发送键 shift+tab

python - 从数据框中删除重复项,基于两列 A,B,在另一列 C 中保持具有最大值的行

Python Pandas : Effectively Paste 1 Col (Series) to Bottom of pd. df w/>1 列;新行的其他列应该为空

numpy - 特征分解让我对 numpy 感到好奇

python - 使用 Pandas 以迭代方式将列添加到 Dataframe

python - 将 Python .npz 保存为 MATLAB .mat 文件

python - 使用来自特定列的信息将函数应用于 Pandas 数据帧的每个单元格

python - 删除列表中指定范围python之外的所有值

Python:根据值和条件将列添加到交叉表