【发布时间】:2021-12-06 12:40:37
【问题描述】:
我有一个不同元素类型的列表(从数据框的列中提取),我想将其转换为相同的元素类型(整数)。数据框如下所示:
由于“系统性银行危机(开始日期)”列下的某些行只有一年,而其他行有多个,因此提取的列表最终如下所示:
[1994 年, 1990 年, 楠, '1980, 1989, 1995, 2001', 1994 年, 楠, 2008年, 1995年, 1987年, 楠, 1995年, 2008年, 南,...]
有多年(多次银行危机)的国家是一个字符串,而只有一年的国家是一个整数。我想通过遍历每个国家并制作一个从 1970 年到 2019 年运行的虚拟变量,将数据转换为面板数据,如果存在银行危机,则取值为 1,如果没有,则取值为 0。为此,我运行了以下代码:
data_banking = data['Systemic Banking Crisis (starting date)'].to_list()
data_currency = data['Currency Crisis (year)'].to_list()
countries = data['Country'].to_list()
#making lists
years = [1970]
for i in range(1971, 2020):
years.append(i)
banking_crisis = []
currency_crisis = []
countries_long = []
for i in countries:
country = [i for x in range(50)]
countries_long.extend(country)
years_long = []
for i in range(166):
years_long.extend(years)
for i in data_banking:
for y in years:
if y==i:
banking_crisis.append(1)
else:
banking_crisis.append(0)
banking = pd.DataFrame(list(zip(countries_long, years_long, banking_crisis)))
这适用于所有只有一次银行危机的国家,并返回如下所示的数据框:
但是,对于发生多起银行危机的国家,python 无法理解代码,因为年份在一个字符串中。我该如何解决?
我试图将列表data_banking 转换为列表列表,将所有列表元素转换为字符串,然后拆分字符串并将每个字符串元素转换为整数,以便我可以遍历每个(国家)列表中的每个元素data_banking 列表,但它不起作用。
这些是我尝试过的不同变体:
def list_of_lists(lst):
list_1 = [[el] for el in lst]
#listToStr = ' '.join(map(str, lists))
return list_1
#list_1 = listToString(lists)
#for string in list_values:
# list_values = list_1.split(",")
# string = int(string)
#return list_1
data_banking = list_of_lists(data_banking)
for lists in data_banking:
for item in lists:
item = float(item)
# lists = [str(x) for x in lists]
我该怎么办?
【问题讨论】:
-
How to make good reproducible pandas examples 包含您的数据框作为格式化文本,我们不可能从屏幕截图中复制您的数据框。
标签: python dataframe panel-data