Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pandas中插入缺少的行?_Python_Pandas - Fatal编程技术网

Python 如何在pandas中插入缺少的行?

Python 如何在pandas中插入缺少的行?,python,pandas,Python,Pandas,我有以下问题。我正在制作一张热图。为了使我的数据框更加“热图友好”,我需要在X轴和Y轴上填充缺失的值。这就是我的数据帧现在的样子: 我需要遍历两个轴(轴=0的范围为20-393,轴=1的范围为584-648),如果我的数据帧thwn中缺少该轴,则插入一个满是零的列 我听从了这里的建议()并尝试: df = df.reindex(range(20,393), axis=0, fill_value=0) df = df.reindex(range(584,648), axis=1, fill_va

我有以下问题。我正在制作一张热图。为了使我的数据框更加“热图友好”,我需要在X轴和Y轴上填充缺失的值。这就是我的数据帧现在的样子:

我需要遍历两个轴(轴=0的范围为20-393,轴=1的范围为584-648),如果我的数据帧thwn中缺少该轴,则插入一个满是零的列

我听从了这里的建议()并尝试:

df = df.reindex(range(20,393), axis=0, fill_value=0)
df = df.reindex(range(584,648), axis=1, fill_value=0).astype(int) 
但它会将所有现有值重写为零(包括非零值)。你能帮帮我吗?这个答案似乎与我的情况无关:

编辑: 可复制示例:

import pandas as pd

my_df = pd.DataFrame(data={'Centroid1': [20, 20, 22, 26, 27], 
                                'Centroid2': [584, 596, 597, 608, 602], 
                                'counts': [2, 0, 0, 1, 1]})

my_df = my_df.reset_index().pivot(index='Centroid2', 
                                            columns='Centroid1', values='counts')


my_df.fillna(0, inplace=True)

#HOW TO FILL MISSING COLUMNS 20-30 and 582-605??? 
#examples bellow does not work - everything is zero

#Ex 1:
my_df = my_df.rename(columns=int, index=int)
my_df = my_df.reindex(index=range(20,30), columns=range(582,605), fill_value=0)

#Ex 2:
my_df = my_df.reindex(range(20,30), axis=0, fill_value=0)
my_df = my_df.reindex(range(582,605), axis=1, fill_value=0).astype(int) 

似乎您可以互相交换索引和列的范围:

my_df = my_df.reindex(index=range(582,605), columns=range(20,30), fill_value=0).astype(int)

print (my_df) 
Centroid1  20  21  22  23  24  25  26  27  28  29
Centroid2                                        
582         0   0   0   0   0   0   0   0   0   0
583         0   0   0   0   0   0   0   0   0   0
584         2   0   0   0   0   0   0   0   0   0
585         0   0   0   0   0   0   0   0   0   0
586         0   0   0   0   0   0   0   0   0   0
587         0   0   0   0   0   0   0   0   0   0
588         0   0   0   0   0   0   0   0   0   0
589         0   0   0   0   0   0   0   0   0   0
590         0   0   0   0   0   0   0   0   0   0
591         0   0   0   0   0   0   0   0   0   0
592         0   0   0   0   0   0   0   0   0   0
593         0   0   0   0   0   0   0   0   0   0
594         0   0   0   0   0   0   0   0   0   0
595         0   0   0   0   0   0   0   0   0   0
596         0   0   0   0   0   0   0   0   0   0
597         0   0   0   0   0   0   0   0   0   0
598         0   0   0   0   0   0   0   0   0   0
599         0   0   0   0   0   0   0   0   0   0
600         0   0   0   0   0   0   0   0   0   0
601         0   0   0   0   0   0   0   0   0   0
602         0   0   0   0   0   0   0   1   0   0
603         0   0   0   0   0   0   0   0   0   0
604         0   0   0   0   0   0   0   0   0   0

假设df_calc是您最初计算的数据框,您需要的数据框是df_final

df_final=pd.DataFrame()
df_final=df_final.reindex(范围(20393),轴=0,填充值=0)
df_final=df_final.reindex(范围(584648),轴=1,填充值=0)。aType(int)
df_最终更新(df_计算)

@vojtam-感谢您提供的示例、编辑过的答案。