我有一个代码,这是伟大的工作,直到我得到一个csv文件,这是在这个特定的列空。我试着改正,但不知怎么的还是不管用。你知道吗
我的代码应该做的是将serialnumbers拆分为同一项缺少的行。当列中至少有一个serial num时,它工作,在应该的位置打印这个,其余的都是空的。如果它们的数量更多,它也会起作用,但如果没有,则不会起作用:/ 所以我试了这个:
function = (lambda x: x['SerialNumbers']
if x['SerialNumbers'] is numpy.nan
else x['SerialNumbers'][x['count']])
copySerial = updated_csv['SerialNumbers'].copy()
if not (copySerial is numpy.nan):
function = (lambda x: x['SerialNumbers']
if x['SerialNumbers'] is numpy.nan
else x['SerialNumbers'][x['count']])
updated_csv['SerialNumbers'] = updated_csv['SerialNumbers'].str.split(' ')
updated_csv['SerialNumbers'] = updated_csv.apply(function, axis=1)
如果有什么东西或没有它进入如果条件
我也试过这个: -基于上述功能和copySerial:
updated_csv['SerialNumbers'] = numpy.where((copySerial != '')|(copySerial != 'nan') ,updated_csv['SerialNumbers'].str.split(' '), updated_csv['SerialNumbers'])
updated_csv['SerialNumbers'] = numpy.where((copySerial != '')|(copySerial != 'nan'), updated_csv.apply(function, axis=1), updated_csv['SerialNumbers'])
同样,我试着用原始列来做if条件,但是没有成功。我不知道怎么纠正它。你知道吗
我也试过这个:
if [~updated_csv['SerialNumbers'].empty]:
但还是没用
任何帮助都会很好
编辑: 这里有一个csv文件示例,应该使用:
Auftragsdatum;Auftrags-Nr.;Ihre Referenz;Auftragswert;Pos.;Menge;Art.Nr.;Herst.Nr.;Produktname;Ihre Referenz (Position);Netto / Stk.;Rechn.-Nr.;Liefers.-Nr.;Serien-Nr.;Hersteller
20.11.2019;703;;1056,36;100;2;3441223;abc;APC Smart-UPS;;820,4;;;123 122;APC
20.11.2019;703;;1056,36;200;1;1492133;cde;APC UPS;;224,88;;;;APC
20.11.2019;703;;1056,36;300;1;7000061;;Frachtkosten automatisch;;8,99;;;;;
20.11.2019;703;;1056,36;400;1;7003581;;Mautgebühr;;2,09;;;;;
在原始csv中,列名为Serien Nr。在Serien-Nr列的第一行中,有两个序列号,名为123 122我想复制第一行,因为数量(即Menge)是2,然后拆分每行的序列号
因此,最终的结果应该是:
Auftragsdatum;Auftrags-Nr.;Ihre Referenz;Auftragswert;Pos.;Menge;Art.Nr.;Herst.Nr.;Produktname;Ihre Referenz (Position);Netto / Stk.;Rechn.-Nr.;Liefers.-Nr.;Serien-Nr.;Hersteller
20.11.2019;703;;1056,36;100;2;3441223;abc;APC Smart-UPS;;820,4;;;123;APC
20.11.2019;703;;1056,36;100;2;3441223;abc;APC Smart-UPS;;820,4;;;122;APC
20.11.2019;703;;1056,36;200;1;1492133;cde;APC UPS;;224,88;;;;APC
20.11.2019;703;;1056,36;300;1;7000061;;Frachtkosten automatisch;;8,99;;;;;
20.11.2019;703;;1056,36;400;1;7003581;;Mautgebühr;;2,09;;;;;
但是如果没有序列号的话,它应该复制数量的行
这就是你要找的吗?我想你有熊猫的一切:
输出
print(df)
第一部分只是将数据读入熊猫体内。我没有使用任何重命名,所以我的
Serien-Nr.
是你的SerialNumbers
,你的count
是我的Menge
我遍历df,当
count/Menge
大于1时,我进行拆分并将所有新行(如果count/Menge
大于3或更大)添加到新df。你知道吗最后我把这两个df加在一起。你知道吗
编辑:您也可以跳过tmp df的创建,这不重要。请注意,新添加的行不在原始行的正下方/正上方。所以如果有关系的话,你以后就要点了。你知道吗
相关问题 更多 >
编程相关推荐