我目前正在解析一个文件,并将其发送到一个数据框以打印到 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.split
和 explode
这里[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/