如何使用 pandas 打印选定的子字符串(包含在数据框列中)设置条件
How to print just selected substrings (contained in a dataframe column) setting conditions with pandas
大家好。我有一个庞大的数据集,其中有几个由 ISO 代码表示的国家/地区。不管怎样,有些国家显示的是官方名称,但没有 ISO 代码。我想找到它们,然后用各自的 iso 代码替换它们。
这是我的 df 示例:
| TERRITORY |
-----------------------
| IT, GB, USA, France |
| ES, Russia, Germany, PT |
| EG, LY, DZ |
预期输出:
'The nations that were not converted are:' France, Russia, Germany
最大的问题是这些国家在同一个单元格中,并被视为一个单一的值。我想让程序只打印长度超过两个字符的子字符串,但经过多次尝试,我什么也没得到。
有人可以帮我吗?
IIUC,您可以 split
+explode
并映射到已知的代码列表(此处使用 pycountry
):
import pycountry
codes = {c.alpha_2 for c in pycountry.countries}
# or manually set
# codes = {'IT', 'GB', 'USA', 'FR'...}
s = df['TERRITORY'].str.split(', ').explode().drop_duplicates()
print(f'The nations that were not converted are: {", ".join(s[~s.isin(codes)])}')
输出:
The nations that were not converted are: USA, France, Russia, Germany
大家好。我有一个庞大的数据集,其中有几个由 ISO 代码表示的国家/地区。不管怎样,有些国家显示的是官方名称,但没有 ISO 代码。我想找到它们,然后用各自的 iso 代码替换它们。
这是我的 df 示例:
| TERRITORY |
-----------------------
| IT, GB, USA, France |
| ES, Russia, Germany, PT |
| EG, LY, DZ |
预期输出:
'The nations that were not converted are:' France, Russia, Germany
最大的问题是这些国家在同一个单元格中,并被视为一个单一的值。我想让程序只打印长度超过两个字符的子字符串,但经过多次尝试,我什么也没得到。
有人可以帮我吗?
IIUC,您可以 split
+explode
并映射到已知的代码列表(此处使用 pycountry
):
import pycountry
codes = {c.alpha_2 for c in pycountry.countries}
# or manually set
# codes = {'IT', 'GB', 'USA', 'FR'...}
s = df['TERRITORY'].str.split(', ').explode().drop_duplicates()
print(f'The nations that were not converted are: {", ".join(s[~s.isin(codes)])}')
输出:
The nations that were not converted are: USA, France, Russia, Germany