我已经从网页中复制了一个表格,当我将其粘贴到文本文件(或excel)中时,表格是一个值列表。 这是示例列表。
['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
我想要 第1列的第0个项目 第2栏的第一项 第3栏的第3项 第四列的第四项
import pandas as pd
mylist=['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
city=[]
code=[]
area=[]
for i,line in enumerate(mylist):
if i%4==0:
index.append(line)
if i%4==1:
code.append(line)
if i%4==2:
city.append(line)
if i%4==3:
area.append(line)
dict={'code':code,'city':city,'area':area}
df=pd.DataFrame(dict)
我正在寻找的是上面的代码,但是用一种简短的方式,我相信有人可以聪明地做到这一点,只是我找不到它...
答案 0 :(得分:1)
将值转换为数组和 body {
font-family: Alegreya+SC:regular;
}
,最后传递给reshape
构造函数:
DataFrame
答案 1 :(得分:0)
我想您可以使用此pd.DataFrame(list_of_lists, columns=labels)
并使用此this从您的列表中获取list_of_lists
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(l), n):
yield l[i:i + n]
labels=['index', 'code', 'city', 'area']
df = pd.DataFrame(chunks(mylist, 4), columns=labels)
答案 2 :(得分:0)
可能有几种解决方案。
您说您已将数据复制到文本文件。构建数据框的更简单解决方案是调用read_csv
(doc)。它以文件名作为参数。您还可以提供每个元素的“分隔符”。这里举个例子。
假设我有以下文本文件:
Temp.txt :
index, code, city, area
1, 42, Konya, 40.838
42, 62, Tunceli, 7.582
Python :
df = pd.read_csv(r"..\\temp.txt", sep=',')
print(df)
# index code city area
# 0 1 42 Konya 40.838
# 1 42 62 Tunceli 7.582
但是,如果您已经在Python中拥有数据(例如在列表中)。 Ismail提供了解决方案。这是另一个。您可以将1维列表重塑为2D维列表。这里的代码:
Python :
mylist = ['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
def to_matrix(l, n):
return [l[i:i + n] for i in range(0, len(l), n)]
my_list_reshape = to_matrix(mylist, 4)
print(my_list_reshape)
# [['1', '42', 'Konya', '40.838'],
# ['42', '62', 'Tunceli', '7.582' ]]
df = pd.DataFrame(my_list_reshape, columns=['index', 'code', 'city', 'area'])
print(df)
# index code city area
# 0 1 42 Konya 40.838
# 1 42 62 Tunceli 7.582
答案 3 :(得分:-2)
如果您仅指一个列表,并且想利用字典来构建数据框,则可以尝试:
data = {'index':[],'code':[],'city':[],'area':[]}
li = ['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
data['index'].append(li[0])
data['code'].append(li[1])
data['city'].append(li[2])
data['area'].append(li[3])
data
df = pd.DataFrame(data)
df
使用dict构建数据持有者,然后将值附加在其中。使用相同的概念,如果您使用的是嵌套字典,则可以在创建数据框之前浏览列表并将其分配给字典。
data = {'index':[],'code':[],'city':[],'area':[]}
li = [['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582'],
['2', '41', 'Test', '41', '44', '60', 'Test', '9.5']]
for i in li:
data['index'].append(i[0])
data['code'].append(i[1])
data['city'].append(i[2])
data['area'].append(i[3])
df = pd.DataFrame(data)
df