我有一些国家之间进行贸易的数据。我已按月拆分了主文件,并获得了12个2019年的csv文件。下面提供了1月csv数据的示例:
reporter partner year month trade
0 Albania Argentina 2019 01 515256
1 Albania Australia 2019 01 398336
2 Albania Austria 2019 01 7664503
3 Albania Bahrain 2019 01 400
4 Albania Bangladesh 2019 01 653907
5 Zimbabwe Zambia 2019 01 79569855
我想每月建立一个复杂的网络,并打印每个网络的节点数。现在,我可以像这样艰难(愚蠢)地做到这一点。
df01 = pd.read_csv('012019.csv')
df02 = pd.read_csv('022019.csv')
df03 = pd.read_csv('032019.csv')
df1= df01[['reporter','partner', 'trade']]
df2= df02[['reporter','partner', 'trade']]
df3= df03[['reporter','partner', 'trade']]
G1 = nx.Graph()
G1 = nx.from_pandas_edgelist(df1, 'reporter', 'partner', edge_attr='trade')
G1.number_of_nodes()
,以此类推,以用于下一个网络。
我的问题是如何使用“ for循环”读取文件,将其从数据帧转换为网络并报告每个节点的节点数。
我尝试过,但是没有任何报道。
for f in glob.glob('.csv'):
df = pd.read_csv(f)
df1 = df[['reporter','partner', 'trade']]
G = nx.from_pandas_edgelist(df1, 'reporter', 'partner', edge_attr='trade')
G.number_of_nodes()
谢谢。
编辑:
好的。因此,我设法使用类似如下的代码来完成上述操作:
for files in glob.glob('/home/user/VMShared/network/2nd/*.csv'):
df = pd.read_csv(files)
df1=df[['reporter','partner', 'import']]
G = nx.Graph()
G = nx.from_pandas_edgelist(df1, 'reporter', 'partner', edge_attr='import')
nx.write_graphml_lxml(G, "/home/user/VMShared/network/2nd/*.graphml")
我现在面临的问题是如何编写单独的文件。我从中得到的只是一个名为* .graphml的文件。如何获得每个输入文件的graphml文件?另外,如果我能获得与输入文件相同的graphml输出名称,那将是一个加号。