如何在通过 Pandas 在 csv 中写入多个 for 循环的数据时在单个单元格中附加数据?

Posted

技术标签:

【中文标题】如何在通过 Pandas 在 csv 中写入多个 for 循环的数据时在单个单元格中附加数据?【英文标题】:How to append data in single cell while writing data of multiple for loop in a csv through Pandas? 【发布时间】:2022-01-15 04:03:18 【问题描述】:

问题:-

我在一个主 for 循环中有两个嵌套循环,用于从 5 个页面范围内获取不同的数据。 每页有 5 行,但是在将数据写入 csv 后,我只得到 5 个单元格,其中每个单元格有 5 个值。

我想要的解决方案:-

我希望所有日期和时间都在不同的行中,所以总共应该至少有 25 行。

我的最小代码 :-

all = []

for i in range(d, 0, -1):
    driver.find_element_by_link_text(f'i').click()
    time.sleep(5)
    c12 = []
    d12 = []

    date1 = driver.find_elements_by_class_name('GridBiMonthlyBonusEligibleListDatetd.NoSortColumn')
    for i in reversed(date1):
        print(i.text)
        c12.append(i.text)
        if i is None:
            break

    date_time = driver.find_elements_by_class_name('GridBiMonthlyBonusEligibleListLoginDatetd.NoSortColumn')
    for i1 in reversed(date_time):
        print(i1.text)
        d12.append(i1.text)
        if i1 is None:
            break

    z = [c12, d12]
    all.append(z)


 df = pd.DataFrame(all)
 path = 'C:\\Application Data\\pyt_project\\Google_sign_in_automation'
 a1 = ['Date', 'Date_time']
 filename = 
 dt.datetime.now().strftime("Login_logout_time_%d_%b_%y_%I_%M_%p.csv")
 p1 = os.path.join(path, filename)
 df.to_csv(p1, headers = a1, index=True)
 print('printed output')

我从上面的代码得到的 CSV 输出

                              Date                                        Date_time
 03 Nov 2021 08 Nov 2021 09 Nov 2021 10 Nov 2021 11 Nov 2021 | 18:39 12:59 13:05 12:57 12:57

我想要的 CSV 输出

   Date     Date_time
03 Nov 2021  18:39
08 Nov 2021  12:59
09 Nov 2021  13:05
10 Nov 2021  12:57
11 Nov 2021  12:57

我尝试过但没用的方法

df = pd.DataFrame('Date' : [c12],
                'Date_time' : [d12]
                ,
                columns=['Date', 'Date_time'])

【问题讨论】:

【参考方案1】:

注意 因为这个问题只考虑部分代码,我假设之前发生的所有事情都有效并且只进入明显的部分

我希望所有日期和时间都在不同的行中

如果两个列表的长度相同,您可以简单地zip()

pd.DataFrame(zip(c12,d12),columns=['Date', 'Date_time'])

示例

import pandas as pd

c12 = ['03 Nov 2021', '08 Nov 2021','09 Nov 2021','10 Nov 2021','11 Nov 2021']
d12 = ['18:39','12:59','13:05','12:57','12:57']

pd.DataFrame(zip(c12,d12),columns=['Date', 'Date_time'])

输出

Date Date_time
03 Nov 2021 18:39
08 Nov 2021 12:59
09 Nov 2021 13:05
10 Nov 2021 12:57
11 Nov 2021 12:57

但在将数据写入 csv 后,我只得到 5 个单元格,其中每个单元格有 5 个值。

将列表放置在循环之外并检查您的缩进。

c12 = []
d12 = []

for i in range(d, 0, -1):
    driver.find_element_by_link_text(f'i').click()
    time.sleep(5)

    date1 = driver.find_elements_by_class_name('GridBiMonthlyBonusEligibleListDatetd.NoSortColumn')
    for i in reversed(date1):
        print(i.text)
        c12.append(i.text)
        if i is None:
            break

    date_time = driver.find_elements_by_class_name('GridBiMonthlyBonusEligibleListLoginDatetd.NoSortColumn')
    for i1 in reversed(date_time):
        print(i1.text)
        d12.append(i1.text)
        if i1 is None:
            break

pd.DataFrame(zip(c12,d12),columns=['Date', 'Date_time'])#.to_csv(...)

【讨论】:

我正在尝试您的代码将很快回复您,并且我已经更正了我帖子中的缩进 代码运行良好,我得到了正确的输出。只是一个小疑问,为什么 all.append(z) 不起作用?

以上是关于如何在通过 Pandas 在 csv 中写入多个 for 循环的数据时在单个单元格中附加数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在 Python 中将两个列表合并为一个,使用 CSV 模块或 Pandas 写入 csv 或 Excel 文件?

如何使用 Python Pandas 合并多个 CSV 文件

在R语言 中如何把list对象逐行写入csv文件中

如何使用 Python Pandas 将 CSV 文件写入 XLSX?

pandas读取和写入excel,csv太慢怎么办

pandas如何在现有的Excel表格上新建工作表并添加dataframe