我想根据其大小修改单元格值。
如果日期范围如下:
A B C
25802523 X1 2
M25JK0010 Y1 1
K25JK0010 Y2 1
我想修改列“ A”并插入到另一列。 例如,如果第一个单元格的值是A列的大小,则我想将其破坏并获得至少5个值,类似地,其他值取决于每个单元格的大小。
有什么办法可以做到这一点?
答案 0 :(得分:2)
您可以这样做:
t = pd.DataFrame({'A': ['25802523', 'M25JK00010', 'KRJOJR4445'],
'size': [2, 1, 8]} )
根据相应的大小定义所需最终长度的字典。在这里,如果大小为8,我将选择最后5个字符
size_dict = {8: 5, 2: 3, 1: 4}
然后使用简单的pandas apply
t['A_bis'] = t.apply(lambda x: x['A'][len(x['A']) - size_dict[x['size']]:], axis=1)
结果是
0 523 >> 3 last characters (key 2)
1 0010 >> 4 last characters (key 1)
2 R4445 >> 5 last characters (key 8)
答案 1 :(得分:1)
另一种方法:
样本df:
t = pd.DataFrame({'A': ['25802523', 'M25JK00010', 'KRJOJR4445']})
获取A的每个元素的数量:
t['Count'] =(t['A'].apply(len))
然后写一个替换条件:
t.loc[t.Count == 8, 'Number'] = t['A'].str[-5:]