python - 拆分特定行的值而不复制它们
问题描述
我正在尝试清理我的 csv 文件。这样做时,我必须为“数量”> 1 的产品复制行。我是这样做的:
file_in = file_in.loc[file_in.index.repeat(file_in.´Quantity)].reset_index(drop=True)
但现在我有另一个问题。在我的一些产品的另一列中,我有序列号,它们在开始时全部添加到一行中,当我重复时,它们都得到了所有的序列号。现在我想拆分这些序列号,以便每一行只有一个 .
所以从这里:
Quantity SerialNumbers ProductName
1 3 AB1 AB2 AB3 PR
2 3 AB1 AB2 AB3 PR
3 3 AB1 AB2 AB3 PR
4 1 CD monitor
5 4 NAN mouse
6 4 NAN mouse
7 4 NAN mouse
8 4 NAN mouse
9 4 EF1 EF2 EF3 EF4 ace
10 4 EF1 EF2 EF3 EF4 ace
11 4 EF1 EF2 EF3 EF4 ace
12 4 EF1 EF2 EF3 EF4 ace
13 2 NAN screeen
14 2 NAN screeen
15 1 NAN flash
...
我需要它是这样的:
Quantity SerialNumbers ProductName
1 3 AB1 PR
2 3 AB2 PR
3 3 AB3 PR
4 1 CD monitor
5 4 NAN mouse
6 4 NAN mouse
7 4 NAN mouse
8 4 NAN mouse
9 4 EF1 ace
10 4 EF2 ace
11 4 EF3 ace
12 4 EF4 ace
13 2 NAN screeen
14 2 NAN screeen
15 1 NAN flash
..
我尝试添加一个新列,首先从我的序列号创建列表,然后使用 groupby 函数编辑。我试过用这个,但它不起作用。
file_in['Temp_Split'] = numpy.where((~file_in['Temp_Split'].isna()) & (file_in['Quantity']>1),file_in['Temp_Serial'].str.split() & file_in.groupby(['Position','Quantity'])['Temp_Split'].rank(method='first'), file_in['Temp_split'])
我搜索了类似的问题,但它们都是为了在拆分值的同时复制行。也许我应该更改第一行代码,以便在重复时检查 SerialNumbers 并对其进行编辑。但也不确定我应该怎么做。
编辑:我不是在将值拆分为一列时尝试复制行,而是尝试删除一行不需要的内容并添加到下一行。如示例所示。仍然有与开始时相同的行数
解决方案
尝试:
df.SerialNumbers.replace({'NAN':np.nan}, inplace=True)
df['count'] = df.groupby('SerialNumbers').SerialNumbers.cumcount()
f = (lambda x: x['SerialNumbers']
if x['SerialNumbers'] is np.nan
else x['SerialNumbers'][x['count']])
df['SerialNumbers'] = df.SerialNumbers.str.split(' ')
df['SerialNumbers'] = df.apply(lambda x: f(x), axis=1)
df.drop(columns='count')
Quantity SerialNumbers ProductName
0 3 AB1 PR
1 3 AB2 PR
2 3 AB3 PR
3 1 CD monitor
4 4 NaN mouse
5 4 NaN mouse
6 4 NaN mouse
7 4 NaN mouse
8 4 EF1 ace
9 4 EF2 ace
10 4 EF3 ace
11 4 EF4 ace
12 2 NaN screeen
13 2 NaN screeen
14 1 NaN flash
我曾经Groupby.cumcount
找到每个字符串的位置,然后str.split
选择apply
列表中的项目。
推荐阅读
- java - 我有一个充当搜索栏的editText,如果用户没有在搜索栏上输入任何内容,我如何隐藏recyclerView 项目
- html - Bootstrap 4 将侧边栏折叠成导航栏下拉菜单
- flutter - 将字符串添加到列表时的奇怪行为
- python - 使用 Python 进行重定向
- java - 在netbeans中以jFrame形式设计未加载
- java - 在 Java 中使用图形时如何反转 Y 轴的极性?
- vba - VBA Excel - 打开 IE 窗口到 URL,暂停,然后关闭
- c# - 没有为此对象定义无参数构造函数。C#
- c# - 如果其他条件在 c# 中没有正确检查?
- javascript - 使用事件侦听器(Javascript、jQuery)将 BG 颜色更改为随机颜色?