Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 循环中的数据帧,df.to_csv()_Python_Pandas_Dataframe_Concatenation_Export To Csv - Fatal编程技术网

Python 循环中的数据帧,df.to_csv()

Python 循环中的数据帧,df.to_csv(),python,pandas,dataframe,concatenation,export-to-csv,Python,Pandas,Dataframe,Concatenation,Export To Csv,我试图从循环中将df写入csv,每一行代表一个df,但我发现有些困难,因为标题对于所有df都不相等,有些标题对于所有日期都有值,而另一些则没有 我正在使用与此类似的函数编写df: def write_csv(): for name, df in data.items(): df.to_csv(meal+'mydf.csv', mode='a') 它为每顿饭(午餐和晚餐)创建一个csv 每个df与此类似: Name Meal 22-03-18 23-03

我试图从循环中将df写入csv,每一行代表一个df,但我发现有些困难,因为标题对于所有df都不相等,有些标题对于所有日期都有值,而另一些则没有

我正在使用与此类似的函数编写df:

def write_csv():
    for name, df in data.items():
        df.to_csv(meal+'mydf.csv', mode='a')
它为每顿饭(午餐和晚餐)创建一个csv 每个df与此类似:

Name    Meal    22-03-18    23-03-18    25-03-18        
Peter   Lunch   12          10          9
或:

我试图使用pandas concatenate,但没有找到在函数中实现这一点的方法。 我的目标是使标题包含所有日期(作为所需输出的示例),独立于附加到csv的数据帧是否在所有日期中都有值

Actual output:
Name    Meal    22-03-18    23-03-18    25-03-18        
Peter   Lunch   12          10          9       
Mathew  Lunch   12          11          11         10     9
Ruth    Lunch   9           9           8          9    
Anna    Lunch   10          12          11         13     10


output with headers:
Name    Meal    22-03-18    23-03-18    25-03-18           
Peter   Lunch   12          10          9       
Name    Meal    21-03-18    22-03-18    23-03-18    24-03-18    25-03-18
Mathew  Lunch   12          11          11          10          9
Name    Meal    21-03-18    22-03-18    24-03-18    25-03-18    
Ruth    Lunch   9           9           8           9   
Name    Meal    21-03-18    22-03-18    23-03-18    24-03-18    25-03-18
Anna    Lunch   10          12          11          13          10



Output desired:
Name    Meal    21-03-18    22-03-18    23-03-18    24-03-18    25-03-18
Peter   Lunch   12          10          9   
Mathew  Lunch               12          11          11           10
Ruth    Lunch   9           9           8           9
Anna    Lunch   10          12          11          13           10

你能试试这样的吗?不确定这是否正是您想要的,但它将连接数据帧而不完全重叠列

def write_csv():
    df2 = pd.DataFrame()
    for name, df in data.items():
        df2 = df2.append(df)
    df2.to_csv('mydf.csv')

你能试试这样的吗?不确定这是否正是您想要的,但它将连接数据帧而不完全重叠列

def write_csv():
    df2 = pd.DataFrame()
    for name, df in data.items():
        df2 = df2.append(df)
    df2.to_csv('mydf.csv')

在第一次迭代之后,您可以使用header=False标志来添加到csv

def write_csv():
    for i, (name, df) in enumerate(data.items()):
        df.to_csv('mydf.csv', mode='a', header=(i==0))

在第一次迭代之后,您可以使用header=False标志来添加到csv

def write_csv():
    for i, (name, df) in enumerate(data.items()):
        df.to_csv('mydf.csv', mode='a', header=(i==0))
使用以下逻辑(@saucoide)我得到了我想要的输出

有必要创建一个空df,然后填充它,然后按餐分组并打印到csv

main_df=pd.DataFrame()

使用以下逻辑(@saucoide)我得到了我想要的输出

有必要创建一个空df,然后填充它,然后按餐分组并打印到csv

main_df=pd.DataFrame()


你能告诉我哪一个是你的df吗?@Djokester目前是tve的实际输出。我需要得到期望的输出。我试图创建一个主df,然后在循环的末尾写入,但我有一些限制,因为我的df是每个人午餐或晚餐的df,以及日期。你能告诉我哪一个是你的df吗?@Djokester目前是实际输出。我需要得到期望的输出。我试图创建一个主df,然后写在循环的末尾,但我有一些限制,因为我的df是每个人午餐或晚餐以及日期的df。