python - 根据需要的值将其他行插入到数据框中

标签 python pandas

我有一个这样的文本文件:

num_from    num_to   var1    var2
1           1        20      30
2           5        40      50
6           7        60      70
8           8        80      90

此处num_fromnum_to之间的数值相同,例如var1为40,var2 对于数字 2、3、4、5 是 50。

我想使用 read_csv() 将此数据读入数据帧并将该数据帧转换为:

    num    var1    var2
0   1      20      30
1   2      40      50
2   3      40      50
3   4      40      50
4   5      40      50
5   6      60      70
6   7      60      70
7   8      80      90

有没有办法用 pandas 做,还是循环做更好?

最佳答案

您可以使用 pd.concat使用生成器表达式:

df = pd.read_csv('file.csv')  # read file into dataframe

gen = (pd.DataFrame({'num': np.arange(row.num_from, row.num_to+1),
                     'var1': row.var1, 'var2': row.var2}) \
       for row in df.itertuples(index=False))

res = pd.concat(gen, ignore_index=True)

print(res)

   num  var1  var2
0    1    20    30
1    2    40    50
2    3    40    50
3    4    40    50
4    5    40    50
5    6    60    70
6    7    60    70
7    8    80    90

关于python - 根据需要的值将其他行插入到数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54092252/

相关文章:

python - 将单列数据帧合并到另一个数据帧,而无需任何公共(public)键

Python/Pandas - DataFrame 索引 - 向前移动一个月

python - 如何从 tkinter 条目为另一个函数生成位置参数

python - 如何在 TensorFlow 中定义加权损失函数?

Python peewee save() 没有按预期工作

python - 如何让我的 python 程序运行得更快?

Python Selenium(等待框架、元素查找)

python - 将指标函数应用于列表

python - python 中的数据库与平面文件(需要速度但不能放入内存)与生成器一起用于 NN 训练

python - 寻找 Pandas.DateTimeIndex.is_dst()