我有一个看起来像这样的pandas数据框
It is a large dataset with 1500 rows and 200 columns
我想知道如何在行和列中的每个值之前删除该数字。例 值看起来像这样: 1:0.345 2:-0.467
我只希望价值如下: 0.345 -0.467
我该怎么做?
答案 0 :(得分:1)
选择所有列,而不是先由iloc
和每列apply
split
选择,然后按[1]
选择列表的第二个值,最后转换为float
:
df = pd.DataFrame({0: ['4,8,7', '7,6'],
1: ['1: 0.345', '1: 0.345'],
2: ['2: -0.467', '2: -0.467']})
print (df)
0 1 2
0 4,8,7 1: 0.345 2: -0.467
1 7,6 1: 0.345 2: -0.467
df.iloc[:, 1:] = df.iloc[:, 1:].apply(lambda x: x.str.split(':').str[1]).astype(float)
print (df)
0 1 2
0 4,8,7 0.345 -0.467
1 7,6 0.345 -0.467
如果无法使用NaN
s值,请使用cᴏʟᴅsᴘᴇᴇᴅ's solution:
df.iloc[:, 1:] = df.iloc[:, 1:].applymap(lambda x: x.split(':')[-1]).astype(float)