我想对 *
上的字符串进行分区,然后使用 *
的右侧更新第二列。
import pandas as pd
import numpy as np
df = pd.DataFrame.from_dict({
'0': {'158': 'QRE', '159': 'AAA*XCN', '160': 'JJJJ'},
'1': {'158': 'ABC', '159': np.nan, '160': np.nan},
'2': {'158': 931, '159': 88, '160': 0},
})
# : 0 1 2
# : 158 QRE ABC 931
# : 159 AAA*XCN NaN 88
# : 160 JJJJ NaN 0
expected = pd.DataFrame.from_dict({
'0': {'158': 'QRE', '159': 'AAA', '160': 'JJJJ'},
'1': {'158': 'ABC', '159': '*XCN', '160': np.nan},
'2': {'158': 931, '159': 88, '160': 0},
})
# : 0 1 2
# : 158 QRE ABC 931
# : 159 AAA *XCN 88
# : 160 JJJJ NaN 0
这是我目前所拥有的,但我正在努力走到尽头。
split = df.iloc[:, 0].str.partition('*', expand=True)
df.iloc[:, 0] = split.iloc[:, 0]
rows = df.iloc[:, 1].isnull()
最佳答案
使用update
通过 split
ed DataFrame
,如有必要,还可以通过 radd
添加 *
:
split = df.iloc[:, 0].str.split('*', expand=True).rename(columns=str)
split['1'] = split['1'].radd('*')
#same like
#split['1'] = '*' + split['1']
df.update(split)
print (df)
0 1 2
158 QRE ABC 931
159 AAA *XCN 88
160 JJJJ NaN 0
关于python - 在自定义分隔符上拆分字符串列替换相邻的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775998/