Re: csv einlesen in array of tuples und sortieren nach tupel-Element
Verfasst: Montag 19. Oktober 2020, 09:45
Moment....
Ja, danke. Funktioniert wunderbar.
Ja, danke. Funktioniert wunderbar.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
ds["Paar"] = ((ds["dL [%]"] < 0.2) & (ds["dR [%]"] < 2)).map({True: "P", False: "-"})
Code: Alles auswählen
print(ds.to_string(formatters={'dL [%]': "{:.2%}".format, 'dR [%]': "{:.2%}".format}))
Code: Alles auswählen
import pandas as pd
def fun(col1,col2):
return abs(2*(col2-col1)/(col2+col1))
def paar(row):
return "P" if row['dL [%]'] < 0.002 and row['dR [%]'] < .002 else "-"
df = pd.read_csv('neue_messung.csv',names=['ID','L [µH]','R [Ω]'],header=None)
#print(df)
#df['dL [%]'] = 0
#df['dR [%]'] = 0
#df['Paar']=""
#
# ds = sorted df
ds = df.sort_values(by='L [µH]')
ds['dL [%]']=fun(ds['L [µH]'],ds['L [µH]'].shift(1))
ds['dR [%]']=fun(ds['R [Ω]'],ds['R [Ω]'].shift(1))
#ds['dL [%]']=ds['dL [%]'].apply(lambda x:round(x,2))
#ds['dR [%]']=ds['dR [%]'].apply(lambda x:round(x,2))
#ds['Paar'] = ds.apply(paar, axis=1)
ds["Paar"] = ((ds["dL [%]"] < 0.2) & (ds["dR [%]"] < 2)).map({True: "P", False: "-"})
#ds.style.format({'dL [%]': "{:.2%}",'dR [%]': "{:.2%}"})
ds.to_string(formatters={'dL [%]': "{:.2%}".format, 'dR [%]': "{:.2%}".format})
val= ds['dL [%]'][1]
print (val)
ds
-------------------------------
ID L [µH] R [Ω] dL [%] dR [%] Paar
9 81 867.38 12.91 NaN NaN -
0 52 872.72 12.66 0.006138 0.019554 P
32 40 872.87 12.60 0.000172 0.004751 P
8 29 874.51 12.43 0.001877 0.013584 P
34 86 874.54 12.52 0.000034 0.007214 P
4 19 874.97 12.71 0.000492 0.015061 P
27 61 876.03 12.43 0.001211 0.022275 P
25 89 876.23 12.70 0.000228 0.021488 P
17 32 877.12 12.41 0.001015 0.023098 P
16 80 877.42 12.55 0.000342 0.011218 P
37 79 877.51 12.48 0.000103 0.005593 P
33 38 878.59 12.43 0.001230 0.004014 P
39 59 878.70 12.39 0.000125 0.003223 P
14 33 878.71 12.57 0.000011 0.014423 P
Danke. Ja, hatte ich übersehen. Hatte das Beispiel nur aus einem Stackoverflow-Artikel rausgeholt.__blackjack__ hat geschrieben: Montag 19. Oktober 2020, 22:15 @Krischu: Die `to_string()`-Methode wandelt den DataFrame in eine Zeichenkette. Man muss mit der Zeichenkette dann auch schon irgendetwas machen.
Code: Alles auswählen
import pandas as pd
def fun(col1,col2):
return abs(2*(col2-col1)/(col2+col1))
def paar(row):
return "P" if row['dL'] < 0.002 and row['dR'] < .002 else "-"
#df = pd.read_csv('neue_messung.csv',names=['ID','L [µH]','R [Ω]'],header=None)
data=[(52,872.72,12.66),
(2,883.16,12.46),
(35,881.20,12.50),
(47,881.92,12.50),
(19,874.97,12.71)]
df = pd.DataFrame(data,columns=['ID','L','R'])
ds = df.sort_values(by='L')
ds['dL']=fun(ds['L'],ds['L'].shift(1))
ds['dR']=fun(ds['R'],ds['R'].shift(1))
ds["Paar"] = ((ds['dL'] < 0.2) & (ds['dR'] < 2)).map({True: "P", False: "-"})
ds.style.format({'dL': "{:.2%}",'dR': "{:.2%}"})
print(ds)
ds
-----------------------------
ID L R dL dR Paar
0 52 872.72 12.66 NaN NaN -
4 19 874.97 12.71 0.002575 0.003942 P
2 35 881.20 12.50 0.007095 0.016660 P
3 47 881.92 12.50 0.000817 0.000000 P
1 2 883.16 12.46 0.001405 0.003205 P
ID L R dL dR Paar
0 52 872.72 12.66 NaN NaN -
4 19 874.97 12.71 0.002575 0.003942 P
2 35 881.20 12.50 0.007095 0.016660 P
3 47 881.92 12.50 0.000817 0.000000 P
1 2 883.16 12.46 0.001405 0.003205 P