简体   繁体   English

遍历熊猫中的数据框行

[英]iterate over data frame rows in pandas

Iterate over the rows in pandas and get the list of objects from rows 遍历熊猫中的行并从行中获取对象列表

import pandas as pd;
df=pd.read_json("inputfile.txt")
                               data
0  {'M': {'1': 'data', '2': 'data2'}}
1    {'M': {'3': '555', '5': '3333'}}

data=[]
for row in df.iterrows():
    d = [{k1+k2:v2 for k1,v1 in x.items() for k2,v2 in v1.items()} for x in row]
    data.append(d)
print (data)

getting output like this 得到这样的输出

[[{'M1': 'data', 'M2': 'data2'}], [{'M3': '555', 'M5': '3333'}]]

need the output like this 需要这样的输出

[{'M1': 'data', 'M2': 'data2'}, {'M3': '555', 'M5': '3333'}]

By doing: 通过做:

d = [{k1+k2:v2 for k1,v1 in x.items() for k2,v2 in v1.items()} for x in row]

You are creating a list. 您正在创建一个列表。 And appending it to data . 并将其附加到data

Modified code: 修改后的代码:

import pandas as pd

df = pd.DataFrame({'data': [{'M': {'1': 'data', '2': 'data2'}}, {'M': {'3': '555', '5': '3333'}}]})
data = []
for row in df.iterrows():
    d = {k1+k2:v2 for x in row[1] for k1,v1 in x.items() for k2,v2 in v1.items()}
    data.append(d)
print(data)
  • .extend() - extends the list by adding all items of a list (passed as an argument) to the end. .extend() -通过将列表的所有项目(作为参数传递)添加到末尾来扩展列表。

Ex. 防爆。

import pandas as pd
data = {'data':[{'M': {'1': 'data', '2': 'data2'}},{'M': {'3': '555', '5': '3333'}}]}
df = pd.DataFrame(data)
print(df)
result=[]
for row in df.iterrows():
    x = [{"{0}{1}".format(k,k1) : v1 for k,v in x[1].items() for k1,v1 in v.items()} for x in row[1].items() ]
    result.extend(x)
print(result)

Or single-line list comprehension 或单行列表理解

x = [{"{0}{1}".format(k,k1) : v1 for k,v in x[1].items() for k1,v1 in v.items()} for row in df.iterrows()
         for x in row[1].items() ]
print(x)

O/P: O / P:

                                 data
0  {'M': {'1': 'data', '2': 'data2'}}
1    {'M': {'3': '555', '5': '3333'}}


[{'M1': 'data', 'M2': 'data2'}, {'M3': '555', 'M5': '3333'}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM