2016-10-20 45 views
3

我有两个CSV文件的形状可以说3x3。覆盖两个熊猫Dataframes或numpy数组并创建一个键值字典

文件1看起来像这样:

-1, 2,-1 
-1,-1, 3 
-1, 8, 9 

和文件2是这样的:

-1, 56,-1 
-1,-1, 73 
-1, 24, 100 

我的目标是覆盖两个阵列或DataFrame S和创建以下形式的字典:

dict = {2:56, 3:73, 8:24, 9:100} 

我可以创建一些基于循环的东西,但我想知道是否有办法掩盖或覆盖数组并创建相应的字典?

回答

4

您可以展平dataframes,放下空值,和字典/ ZIP他们:

import pandas as pd 

# Load the data, converting -1 to NaN 
dfa = pd.read_csv('file1.csv', header=None, na_values=[-1]) 
dfb = pd.read_csv('file2.csv', header=None, na_values=[-1]) 

# Flatten the dataframes 
a = dfa.values.flatten() 
b = dfb.values.flatten() 

# Remove null values and cast back to ints (if that matters) 
# Note that both are filtered according to the key data 
a = a[~np.isnan(a)].astype(int) 
b = b[~np.isnan(a)].astype(int) 

# Zip to pair the lists, then convert to a dict 
d = dict(zip(a, b)) 
+0

@piRSquared好点!更改。 – ASGM

+0

感谢您的回复! –

+0

@Floriand没问题!如果它解决了你的问题,你可以接受答案,让人们知道它已经解决了,如果你喜欢答案,你可以放弃它(尽管这两者都不是必需的!)。 – ASGM