Python 旋转包含字符串的数据帧-第一次只添加一列,然后在任何列中添加值

Python 旋转包含字符串的数据帧-第一次只添加一列,然后在任何列中添加值,python,python-3.x,pandas,python-2.7,Python,Python 3.x,Pandas,Python 2.7,大家早上好 我有许多以下格式的文件,但在测量列中有不同的值 subject_id hour measure value 2 1 heart rate 40 4 3 SPO2 high 我想使用pivot表重塑数据,以便使用以下代码 df1 = df.pivot_table(index=["subject_id" ,"hour"], columns='measur

大家早上好 我有许多以下格式的文件,但在测量列中有不同的值

subject_id     hour    measure      value

2               1      heart rate    40
4               3      SPO2          high
我想使用pivot表重塑数据,以便使用以下代码

    df1 = df.pivot_table(index=["subject_id" ,"hour"], columns='measure', values=['value'], aggfunc='first')
    df1.columns = df1.columns.droplevel()
    df1 = df1.reset_index()
    df1.columns=df1.columns.tolist()
    print (df1)
 with open('patients.csv', 'a',newline='') as f: 
    df1.to_csv(f, header=True)
它运行良好,并给我以下文件

subject_id    hour    heart rate    spo2
2              1        40          
4              3                    high
但是当我想将另一个文件连接到同一个文件
patients.csv
假设新文件是

subject_id     hour        measure      value

    5               4      resp          50
    6               4      urine         200
我使用上面提到的相同代码添加值和新列

 df1 = df.pivot_table(index=["subject_id" ,"hour"], columns='measure', values=['value'], aggfunc='first')
        df1.columns = df1.columns.droplevel()
        df1 = df1.reset_index()
        df1.columns=df1.columns.tolist()
        print (df1)
     with open('patients.csv', 'a',newline='') as f: 
        df1.to_csv(f, header=True)
因此,它没有将新度量值添加为新列,它只添加新患者,并将值添加到旧列,如下所示

subject_id         hour    heart rate       spo2
    2              1        40          
    4              3                        high
    5              4        50
    6              4                        200
 subject_id         hour    heart rate       spo2     resp    urine
    2              1        40          
    4              3                        high        
    5              4                                   50
    6              4                                            200
因此,输出文件不正确,我希望它如下所示

subject_id         hour    heart rate       spo2
    2              1        40          
    4              3                        high
    5              4        50
    6              4                        200
 subject_id         hour    heart rate       spo2     resp    urine
    2              1        40          
    4              3                        high        
    5              4                                   50
    6              4                                            200
我怎样才能解决这个问题
任何帮助都将不胜感激

您需要在
python
中操作数据,而不是每次都将其添加到文件中。在“patients.csv”中获得第一个文件中的数据后,请使用以下方法读取:

original_data = pd.read_csv("patients.csv")
在创建
df1
之后,如在代码中所做的那样,使用以下代码对其进行连接:

full_data = pd.concat([original_data, df1], sort=False)
然后,您可以使用以下方法保存它:

full_data.to_csv("patients.csv", index=False) # Always better option to work with csv files than "with open... as..."

如何将第二个文件转换为第一个文件?请在问题中添加代码,而不是作为注释。好的,完成,,你现在可以检查我想你只是错误地复制了前一个代码。。。(修复后我将删除此注释)这是相同的代码,但它与每个文件一起运行,以便在第一次使用时将结果连接到最终文件,我们只能使用save**pivot\u table.to\u csv('\\path)**