使用循环从列表创建数据框

3

我有一个包含字符串的列表,我计划使用循环创建一个数据框。以下示例可能会更好地理解:

s=["first","second","third"]
a=s[0]
for i in range(1,len(s)):
    print(i)
    print(s[i])
    a=a+s[i]
#########
print(a)
'first;second;third'
## Creating dataframe####
d=pd.DataFrame()
d["c"]=1
d["text"]=a

这给我一个空数据框。
预期输出为:
c       text

1       first;second;third
2个回答

2
您可以使用enumeratedict来实现这个功能:
s = ["first", "second", "third"]

df = pd.DataFrame.from_dict(dict(enumerate(s, 1)), orient='index')\
                 .reset_index()\
                 .rename(columns={'index': 'c', 0: 'text'})

#    c    text
# 0  1   first
# 1  2  second
# 2  3   third

避免“在循环中构建数据框架”的做法。你最好的选择几乎总是先构建一个列表或字典,然后再传入pd.DataFrame中。
上述示例适用于任何长度的s

0
你在寻找什么?
import pandas as pd
s=["first","second","third"]
a = "; ".join(s)

d=pd.DataFrame([{"text": a, "c": 1}])
print(d)

输出:

   c                  text
0  1  first; second; third

我不确定列表的长度,所以我在那里使用了循环。 另外,我需要一个标识符,在上面的情况下它用d["c"]表示。这个标识符也将被循环使用。根据这个要求,我能得到一个数据帧吗?为什么我的情况下会得到一个空的数据帧? - Sam
@Sam 如果标识符是一个索引,你可以在执行字典推导时使用enumerate()函数。 - lwileczek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接