我有一个CSV文件,它可以打印这样的数据:
| 名称|点|类型|
| --|--|--|
| Name1|||
| Name2|||
| Name3|||
| | 4.5 ||
| | 2.5 ||
| | 1.0 ||
| | | type1 |
| | | type1 |
| | | type1 |
我希望它像这样打印:
| 名称|点|类型|
| --|--|--|
| Name1| 4.5| type1|
| Name2| 2.5| type1|
| Name3| 1.0| type1|
唯一的缺点是,该文件有许多这样的序列,所有这些序列都以不同的长度变化,即:
| 名称|点|类型|
| --|--|--|
| Name1|||
| Name2|||
| | 1.0 ||
| | 2.0 ||
| | | type1 |
| | | type1 |
| Name3|||
| | 4.5 ||
| | | type2 |
如何创建一个python程序,使数据向上移动到最上面的空列?
我是realitivly新的使用csv文件和编程一般所以我没有在任何尝试非常成功.我一直在使用ChatGPT,它吐出了一些建议使用Pandas和其他东西,但他们都没有解决我的问题.任何帮助是appreicated,谢谢!
4条答案
按热度按时间w6mmgewl1#
我认为您可以使用python内置功能通读csv文件,但在单独的列表中跟踪每列中的值
字符串
如果愿意,还可以将上面的列值列表转换为pandas框架
型
eblbsuwk2#
解决这个问题的一个可能方法是使用Python中的pandas库,它可以轻松地操作 Dataframe 。下面是一个可能适合你的示例代码:
Import pandas导入pandas作为pd
读取csv文件df = pd.read_csv(“yourfile.csv”)
定义一个函数将值上移到最上面的空列def shift_up(df):
循环遍历df中col的列。columns:#查找列中第一个非空单元格的索引first_non_empty = df[col].first_valid_index()#如果索引不为零,则在first_non_empty!= 0的情况下将值上移该数量:df[col] = df[col].shift(-first_non_empty)
返回修改后的 Dataframe return df
将函数应用于 Dataframe df = shift_up(df)
将修改后的 Dataframe 写入新的csv文件df.to_csv(“newfile.csv”,index=False)
你可以在这个网站上找到更多关于Pandas及其方法的信息。我希望这对你的任务有帮助。
zqdjd7g93#
Pandas丢弃NaN的能力使这一点变得简单。
字符串
产出:
型
inkz8wg94#
您可以使用
zip
将列转置为行,并使用filter
函数过滤掉空值,然后使用zip
将行转置回列:字符串
这将产生:
型