如何使用 Python 从数据框中的单元格中部分删除内容
How to partially remove content from cell in a dataframe using Python
我有以下数据框:
import pandas as pd
df = pd.DataFrame([
['\nSOVAT\n', 'DVR', 'MEA', '\n195\n'],
['PINCO\nGALLO ', 'DVR', 'MEA\n', '195'],
])
看起来像这样:
我的目标是分析数据帧的每个单元格,以便:
- 如果子字符串
\n
只出现一次,那么我会删除它以及它之前的所有字符;
- 如果子字符串
\n
在特定单元格中出现不止一次,那么我删除所有包含的 \n
以及它们之前和之后的内容(除了它们之间的内容)
代码的输出应该是这样的:
注意:到目前为止,我只知道如何使用以下命令删除子字符串之前或之后的内容:
df = df.astype(str).stack().str.split('\n').str[-1].unstack()
df = df.astype(str).stack().str.split('\n').str[0].unstack()
然而,这行代码并没有让我得到想要的结果,因为输出是:
df.replace
和一些正则表达式。
In [1]: import pandas as pd
...: df = pd.DataFrame([
...: ['\nSOVAT\n', 'DVR', 'MEA', '\n195\n'],
...: ['PINCO\nGALLO ', 'DVR', 'MEA\n', '195'],
...: ])
...:
In [2]: df.replace(r'.*\n(.*)\n?.*', r'', regex=True)
Out[3]:
0 1 2 3
0 SOVAT DVR MEA 195
1 GALLO DVR 195
我有以下数据框:
import pandas as pd
df = pd.DataFrame([
['\nSOVAT\n', 'DVR', 'MEA', '\n195\n'],
['PINCO\nGALLO ', 'DVR', 'MEA\n', '195'],
])
看起来像这样:
我的目标是分析数据帧的每个单元格,以便:
- 如果子字符串
\n
只出现一次,那么我会删除它以及它之前的所有字符; - 如果子字符串
\n
在特定单元格中出现不止一次,那么我删除所有包含的\n
以及它们之前和之后的内容(除了它们之间的内容)
代码的输出应该是这样的:
注意:到目前为止,我只知道如何使用以下命令删除子字符串之前或之后的内容:
df = df.astype(str).stack().str.split('\n').str[-1].unstack()
df = df.astype(str).stack().str.split('\n').str[0].unstack()
然而,这行代码并没有让我得到想要的结果,因为输出是:
df.replace
和一些正则表达式。
In [1]: import pandas as pd
...: df = pd.DataFrame([
...: ['\nSOVAT\n', 'DVR', 'MEA', '\n195\n'],
...: ['PINCO\nGALLO ', 'DVR', 'MEA\n', '195'],
...: ])
...:
In [2]: df.replace(r'.*\n(.*)\n?.*', r'', regex=True)
Out[3]:
0 1 2 3
0 SOVAT DVR MEA 195
1 GALLO DVR 195