我有一个这样的文本文件:
num_from num_to var1 var2
1 1 20 30
2 5 40 50
6 7 60 70
8 8 80 90
此处num_from
和num_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/