使用python,我们如何选择非常特定的行和关联的列

2024-09-22 16:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我仍在学习python,如果这个问题对某些人来说微不足道,请原谅

我有一个以下格式的csv文件,我想提取其中的一小部分并写入另一个csv文件: enter image description here

所以,这就是我想做的:

  1. 只需提取actor_list2下的条目和相应的id列,并以以下格式将其写入csv文件

enter image description here

由于格式不是后跟一些值的常规列标题,因此我不确定如何根据特定列中的单元格值选择起始点。即使我们考虑ACTROLIList2,它也可以有任意数量的条目。请帮助我了解是否可以使用熊猫数据帧处理功能完成

更新:我之所以想自动化它,是因为可能有数千个这样的文件,手动获取这些信息来创建最终的csv文件是不切实际的,因为每个文件都有一行


Tags: 文件csv数据功能信息id标题数量
2条回答

由于CSV文件是不规则的,所以有很多空位置,其中包含“nan”对象。同时,这些列将被编入索引

我会用熊猫来读书

import pandas as pd
df = pd.read_csv("not_regular_format.csv", header=None)

然后,初始化并清空字典以存储结果,并使用它构建输出DataFram,最终将其内容发送到CSV文件

target={}

现在您需要在第二列中找到actor_list2,这是索引为0的列,如果它存在,开始在字典target中的下一行和列12中存储名称和分数

rows_index = df[df[1] == 'actor_list2'].index
if len(rows_index) > 0:
    i = rows_index[0]
    while True:
        i += 1
        name = df.iloc[i, 1]
        score = df.iloc[i, 2]
        if pd.isna(name): # the names sequence is finished and 'nan' object exists.
            break
        target[name] = [score]

最后,构造DataFrame并编写新的output.csv文件

df_output=pd.DataFrame(target)
df_output.to_csv('output.csv')

现在,您可以使用上面给出的示例去任何地方

祝你好运

正如努尔·阿拉所指出的,这里的格式至少可以说不是很规范。如果您的数据每次都是这样显示的,那么您最好跳过文件中的某些行:

import pandas as pd

df = pd.read_csv('blabla.csv', skiprows=list(range(17)), nrows=8)
df_res = df.loc[:, ['actor_list2', 'ID']]

这应该会得到结果,但考虑到格式的不稳定性,这是无法实现自动化的。如果下次有另一个演员呢?还是少一个?即使是努尔·安拉的解决方案也无济于事

老实说,你应该得到更好的数据

相关问题 更多 >