python - Pandas - 迭代时重复行

标签 python list loops pandas duplicates

我试图在数据帧迭代期间创建重复的行。基本上,我有两个 for 循环,其中在第一个循环中,我将值输入 API,在第二个循环中,我从 JSON 输出中提取值。

我想复制当前行并根据列表上的项目数创建 N 行。 例如:

Name    Date      Sales     
John    1/1/17    100
Bob     1/2/17    200

items = []
for row in df.sales:
    url = 'www.samplewebsite.com/values=xyz/APIKEY=MYAPIKEY'
    result = simplejson.load(urllib.urlopen(url))
    for i in range(0, len(result['column a'][0]['column b']:
        items.append(result['column a'][0]['column b'][i]['item'])

在此特定循环中,创建了两个列表(一个用于 John,另一个用于 Bob):

items = ['Paper','Paper Clips','Pencils']
items = ['Notebook','Stapler','Highlighter','Pen']

期望的输出:

Name    Date      Sales     Item
John    1/1/17    100       Paper
John    1/1/17    100       Paper Clips
John    1/1/17    100       Pencils
Bob     1/2/17    200       Notebook
Bob     1/2/17    200       Stapler
Bob     1/2/17    200       Highlighter
Bob     1/2/17    200       Pen

提前谢谢您!

最佳答案

有几种方法可以做到这一点。在循环内部,提取每个项目后,您可以将一项和一个名称推送到主数据框中。或者,您可以将一堆项目与一个名称一起插入一个 df 中,然后将其附加到每个名称后面的主 df 中。或者您可以收集所有内容,然后将它们附加在最后。

以下是如何将属于一个名称的所有项目放入 df 中,然后将其附加到主 df 中。您必须在循环内执行此操作,每个名称一次:

# set this up before the loop
mainDF = pd.DataFrame( columns=['Name','Items'])

## this gets populated inside the loop
name = 'John'
items = ['Paper','Paper Clips','Pencils']

# inside the loop create a df to hold one name and all the items belonging to that name
df = pd.DataFrame( columns=['Name','Items'])

#populate... do items first then fill in all the name with the one name
df.Items = items
df.Name = name

## then append the above df into the main df
mainDF = mainDF.append(df)

关于python - Pandas - 迭代时重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43103529/

相关文章:

python - 字典列表中的最大值和最小值,其中每个字典键都有一个值

两个列表列表的点积之和的Pythonic方式

c - 在 c 中将用户输入扫描到 .txt 文件中

c++ - 如何组织带有符号分析的无限循环?

python - 使 pandas 中的行操作更快

python - 随机将字符串中的字母大写

python - 从python3中的数组中删除元素

jquery - 重复函数 X 次

python - 在 Pyspark 中使用 UDF 函数时,密集向量应该是什么类型?

python - 有没有办法总结一个计数?