Python 如何在一列的所有值中仅允许点后的4个值?

Python 如何在一列的所有值中仅允许点后的4个值?,python,pandas,dataframe,Python,Pandas,Dataframe,我尝试合并两个具有公共列的数据帧,类似于示例: Df 1:A列| B列 234.345564 43.234338 234.345882 23.454138 212.348762 98.454387 123.349834 43.452338 Df 2:A列| B列 234.345564123 43.2343384313 234.345882543 23.4541383413 212.348762113 98.4543872343 123.349834458 43.452338341

我尝试合并两个具有公共列的数据帧,类似于示例:

Df 1:A列| B列
234.345564  43.234338
234.345882  23.454138
212.348762  98.454387
123.349834  43.452338
Df 2:A列| B列
234.345564123  43.2343384313
234.345882543  23.4541383413
212.348762113  98.4543872343
123.349834458  43.4523383414

但正如你所看到的,其中一个的激励比另一个更大。所以我试图在两个数据帧的列中只保留点后的前4个数字,这样当我合并它们时,更多的数字将相互对应

那么他们会是这样的:


Df 1:A列| B列
234.3455   43.2343
234.3458   23.4541
212.3487   98.4543
123.3498   43.4523
Df 2:A列| B列
234.3455   43.2343
234.3458   23.4541
212.3487   98.4543
123.3498   43.4523

我以前使用过下面列出的函数,但我不知道如何在这里应用它们

.append(pl[0:pl.find('..'))
[f'{i}-{int(j)}'表示映射中的i,j(lambda x:x.split('-'),segunda_lista)]


如何实现这一点?

如果您的数据是数字,您可以执行以下操作:

df2 = df2.apply(pd.Series.round, decimals=4)
或者,如果您的数据是文本:

df2 = df2.apply(lambda x: x.str.extract('^(\d*(\.\d{,4})?)')[0])
输出:

       ColA     ColB
0  234.3456  43.2343
1  234.3459  23.4541
2  212.3488  98.4544
3  123.3498  43.4523

那么,他的分辨率适用于数据帧的所有列?如果我有一些列是字符串和其他整数,那么这些行还能工作吗?谢谢你,顺便说一句;)